任务是当我们在 3 维空间中有一条线段(我们有两端的坐标)并且我们有信息为angle
,ratio
和amount
。我们的工作是给我们接下来的几条线段(few= amount
),它们的起点在我们的第一条线段的末尾(我们知道哪条线的终点和起点)并像这里一样旋转
我们第一行的俯视图(行在中心(这个黑点)):
Amount
高达 100.Angle
至 180*。
这就是我所做的:
Sx,Sy,Sz - 开始坐标 x,y,z - 结束坐标
float siny=sqrt((x-Sx)*(x-Sx)+(z-Sz)*(z-Sz))/S->korona[lvl-1]->l;
float cosy=(y-Sy)/S->korona[lvl-1]->l;
float cosx=(Sx-x)/sqrt((x-Sx)*(x-Sx)+(z-Sz)*(z-Sz));
float sinx=(z-Sz)/sqrt((x-Sx)*(x-Sx)+(z-Sz)*(z-Sz));
float co=cos(angle);
float si=sin(angle);
float newa=a*ratio;
for(int j=0;j<S->amount;j++){
float a=newa*(co*cos(360.0f/S->amount*j*rad)*cosy-si*siny);
float b=newa*(co*cos(360.0f/S->amount*j*rad)*siny+si*cosy);
float c=newa*co*sin(360.0f/S->amount*j*rad);
}
我们新的:
x=c*sinx+a*cosx+S->korona[lvl-1]->sticks[i]->x
y=b+S->korona[lvl-1]->sticks[i]->y
z=c*cosx-a*sinx+S->korona[lvl-1]->sticks[i]->z)
如何更快地得到这个?顺便说一句,这个解决方案很糟糕。有没有更好的办法?
类似于HERE但在3D中