/images/avatar.jpg

二维异形件排版算法(摘抄)

算法简介

排样问题(Nesting Problem)又称为下料问题(Cutting and stock problems)或填充问题(Packing Problem),其目标是在材料切割过程中寻找一个较高的材料利用率。排样问题属于经典的NP-Hard问题,其时间复杂度随着问题规模的增加迅速上升,难以在合理时间内精确求解大规模实例。相较于矩形排样问题,异形件排样问题的突出特点是裁片的边界轮廓复杂,计算过程中需要复杂的几何运算,其算法复杂度将进一步上升,是学术界和工业界公认的难以求解的问题。因此在大多数情况下,不规则形状排样算法主要是以启发式算法和智能搜索算法为主。

wsl2 install CUDA

驱动

网上有许多资料写道需要安装针对WSL特别驱动,但是现在已经不需要这么做了,只需要到NVIDIA官网将驱动升级到最新版本即可。根据参考资料描述,驱动类型最好选择Game Ready版本而不是studio版本。
/images/nvidia_download.jpg 注意,该是安装Windows驱动,而不是安装Linux驱动,在Windows下安装驱动后,会自动将驱动以_libcuda.so_的形式集成至WSL2中,因此切勿在WSL Linux中重复安装驱动

Hyper-V做port forwarding

创建 NAT 虚拟网络

要用到一些PowerShell命令

1
2
3
4
5
New-VMSwitch -SwitchName "new" -SwitchType Internal

New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceAlias "vEthernet (new)"

New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.0.0/24

New-VMSwitch 新建了一个内部的交换机
New-NetIPAddress 设置了网卡的ip
New-NetNat 设定了子网

Blender常用操作

/images/logo-blender.png

查看顶点/面法向量

左上角下拉框选择编辑模式,在右边3个Tab中选择面模式 /images/blender_op1.jpg
然后点overlays下拉箭头,就能看到normal的选项了
/images/blender_op2.jpg
第一个Tab就是顶点法向,第三个Tab就是面法向。

WebGL Shader

顶点着色器

vertex.glsl

1
2
3
4
5
6
7
8
9
varying vec3 vPosition;

void main() {
    vPosition = position;
    // MVP
    vec4 modelViewPosition = modelViewMatrix * vec4( position, 1.0 );
    vec4 projectedPosition = projectionMatrix * modelViewPosition;
    gl_Position = projectedPosition;
}
片段着色器

fragment.glsl

1
2
3
4
5
varying vec3 vPosition;

void main() {
    gl_FragColor = vec4(vPosition, 1);
}

效果

用了PlaneGeometry

1
2
3
4
5
6
// meshes
const geometry = new THREE.PlaneGeometry(2, 2)
const material = new THREE.ShaderMaterial({
  vertexShader: vertexShader,
  fragmentShader: fragmentShader,
})

/images/shader-1.png