@G亞歷山大:在這裏你去我的缸實施。這有點乏味,但這是我目前所擁有的。 如果你給我點p0
和p1
,矢量normal=(p1-p0).normalize()
將是圓柱的軸。 選擇點p2不在矢量Normal上。
q=(p2-p0).normalize();
normal.crossproduct(q)=v0;
normal.crossproduct(v0)=v1;
具有這兩個矢量可以有與沿使用下面的函數的圓柱體的軸堆疊的任何半徑的圓(A氣缸是圓的堆棧):
public Circle make_circle(Point center, Vector v0, Vector v1, double radius)
{
Circle c;
for (double i = 0; i < 2 * Math.PI; i += 0.05)
{
Point p = new Point(center + radius * Math.Cos(i) * v0 + radius * Math.Sin(i) * v1);
c.Add(p);
}
return c;
}
你只需要請使用此功能圈沿氣缸軸線:
List<Circle> Cylinder = new List<Circle>();
for(double i=0;i<1;i+=0.1)
{
Cylinder.add(make_circle(P0+i*normal, v0, v1,radius);
}
現在你應該採取兩個連續的圓形和均勻採樣他們四邊形連接。
我已經以這種方式實現它,因爲我已經實現了圓圈。
一種更簡單的方法是使沿x軸的圓,然後旋轉,並把它轉變爲p0
,使其與正常對齊或使用gluCylinder如果你是穀氨酸的風扇....
希望它適合你。
謝謝你。你有一個圓柱體的功能,可以接受兩點並將圓柱體放在那裏嗎? –
我想我是...讓我去吃晚飯,我會在2小時內回來;) –