我正在尋找一種方法來繪製基本上充當地平線的圓的OUTLINE。我不想填滿這個圓圈,但是隻要有一條白線可以看到,即使當你從側面看它時,它也能看到它。這是可能的嗎?有人可以給我看一個教程或告訴我如何?在openGL中用Android繪製圓圈
3
A
回答
8
有比SteveL發佈的更有效的方法。
您可以根據當前點,切線向量和餘弦向量找到圓上下一個點,而不是計算每個點的trig函數(一種計算量大的方法)。 trig函數計算一次,然後每個後續點是一系列乘法,速度要快得多。
該頁面提供對OpenGL的過程中一個非常明確的步進式,但是你可以很容易地申請史蒂夫的答案,使其在OpenGL ES工作:
3
我認爲,如果你使用gl.glLineWidth(20);(或者其他大小)的線THIK將incease太(propably我錯了,但值得一試)
爲了得到一個圓的verices :
float[] verts=MakeCircle2d(1,100,0,0)
public static float[] MakeCircle2d(float rad,int points,float x,float y)//x,y ofsets
{
float[] verts=new float[points*2+2];
boolean first=true;
float fx=0;
float fy=0;
int c=0;
for (int i = 0; i < points; i++)
{
float fi = 2*Trig.PI*i/points;
float xa = rad*Trig.sin(fi + Trig.PI)+x ;
float ya = rad*Trig.cos(fi + Trig.PI)+y ;
if(first)
{
first=false;
fx=xa;
fy=ya;
}
verts[c]=xa;
verts[c+1]=ya;
c+=2;
}
verts[c]=fx;
verts[c+1]=fy;
return verts;
}
它畫成GL10.GL_LINES如果你想有一個空的圓形
gl.glDrawArrays(GL10.GL_LINES, 0, verts.length/2);
或者,如果你想要一個充滿繪製成GL10.GL_TRIANGLE_FAN一個
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, verts.length/2);
+0
真棒感謝..如果我現在想從空心圓每隔5度垂直畫一條線我會同時做還是再次穿過陣列? – erik 2012-02-21 05:37:38
相關問題
- 1. 在android中繪製圓圈
- 2. OpenGL用鼠標移動繪製圓圈
- 3. 如何在android中繪製圓圈?
- 4. 在android中繪製圓圈的XML
- 5. 在C++中繪製圓圈
- 6. 在MATLAB中繪製圓圈
- 7. 繪製圓圈vhdl
- 8. 用php繪製圓圈imagemagick
- 9. 用圓圈繪製形狀
- 10. 在Winform外繪製圓圈
- 11. 在openGL中繪製一個9個點的圓圈?
- 12. 性能 - 在opengl中繪製許多2D圓圈
- 13. 如何在圓圈內繪製圓形?
- 14. 動畫 - 在iOS中繪製圓圈 - 未完成圓圈動畫
- 15. Android:繪製圓圈的字母
- 16. Android自定義ViewGroup繪製圓圈行
- 17. Android圍繞文本繪製圓圈
- 18. Android:圓圈繪製切割邊框
- 19. 在CCRenderTexture中繪製抗鋸齒圓圈
- 20. 如何在Unity3D中繪製圓圈?
- 21. 繪製圓圈並存儲在UIImage中
- 22. 在畫布中心繪製圓圈
- 23. 如何在gnuplot中繪製圓圈
- 24. 在桌面中間繪製圓圈
- 25. 在iPhone中幫助繪製圓圈
- 26. 在directx中繪製一個圓圈9
- 27. 在XNA中繪製簡單的圓圈
- 28. 如何在cocos2dx中繪製圓圈
- 29. cv:圓圈函數用一次調用繪製多個圓圈
- 30. OpenGL:使用gl函數繪製球體/圓圈的幫助
我喜歡他已經解釋過如何繪製而不反覆使用三角函數的方式。雖然我很想問,他是如何計算tx,ty值的。 – 2012-06-09 13:27:47
另外一個繪製弧的解釋,以便考慮方向(CW或CCW)將是有用的。如果你有例如。我們使用slabode代碼繪製圓形連接的偏移多邊形,則開始和結束角度可以按任何順序排列。另外一個多邊形本身可以是CW或CCW,所以纏繞順序非常重要。但是,如果弧角(結束角度)大於起始角度,代碼工作得很好。 – 2013-02-08 20:58:55
鏈接無法正常工作 – Confuse 2017-09-08 05:23:07