1
对于大家来说,我有一个棘手的问题。我正在尝试使用Processing处理3个维度,并且遇到了一个障碍。我想绘制一个沿给定innerRadius的圆弧。我最终希望能够旋转它或者在弧线的不同位置启动它,但是一旦我可以绘制弧线,我就能够计算出它。我的弧代码:处理3D弧形圆柱体
void drawCurvedVessel(int sides, float r, float l, float x, float y, float z, float innerRadius, float degrees)
{
float angle = 360/sides;
// draw top shape
float start = innerRadius*degrees;
translate(x,y,z);
for (int n = 0; n < l; n++){
float theta0 = n/innerRadius;
float theta1 = (n+1)/innerRadius;
float dx0 = innerRadius*cos(theta0);
float dy0 = innerRadius*sin(theta0);
float dx1 = innerRadius*cos(theta1);
float dy1 = innerRadius*sin(theta1);
beginShape(TRIANGLE_STRIP);
for (int i = 0; i < sides + 3; i++) {
x = cos(radians(i * angle)) * r;
y = sin(radians(i * angle)) * r;
float vertexZ1 = sin(theta1)*(innerRadius+sqrt((x+dx1)*(x+dx1)+y*y));
vertex(x+dx1, y, vertexZ1);
float vertexZ0 = sin(theta0)*(innerRadius+sqrt((x+dx0)*(x+dx0)+y*y));
vertex(x+dx0, y, vertexZ0);
}
endShape(TRIANGLE_STRIP);
}
translate(-x,-y,-z);
}
呈现得相当好,除了弧沿着一侧倾斜。你能帮我画出一个完整的圆弧吗?
编辑:我已更新我的代码。它工作得更好,但它没有执行一个完整的循环。相反,它看起来捏在顶部和底部是这样的: https://drive.google.com/file/d/0B7A0w7ZdcEuQUmIzQkFlYzBBUkk/view?usp=sharing
如果你愿意,你可以发布您的解决方案作为这个问题的答案。请参阅http://stackoverflow.com/help/self-answer – kevinsa5 2014-11-05 15:58:52
请删除标题和问题中的“已解决”,并将其作为正确答案发布。 – usr2564301 2015-11-08 01:05:43