http://www.gamedev.net/topic/126624-generating-an-ellipsoid-in-opengl/
2013/04/23: 修正しました。
・不要なインクルードを削除しました。
・GLU.NewQuadric()は必要なかったので、削除しました。
・GLUTの拡張ということにしました。(描画自体は、OpenGLのみで大丈夫です)
使い方
require "./gl_ellipsoid.rb" # 中心は(0,0,0) # 第2引数: X軸方向の半径 # 第3引数: Y軸方向の半径 # 第4引数: Z軸方向の半径 # 第5,第6引数: 描画の細かさ GL.Ellipsoid(1, 2, 3, 20, 20)
gl_ellipsoid.rb
require "opengl" require "glut" module GLUT extend Math def GLUT.Ellipsoid(x,y,z,slice,stack) tStep = Math::PI/slice.to_f sStep = Math::PI/stack.to_f # ワイヤーフレームで描きたい時は、コメントを外してください。 # GL.PolygonMode(GL::FRONT_AND_BACK, GL::LINE) (-Math::PI/2).step(Math::PI/2+0.0001, tStep){|t| GL.Begin(GL::TRIANGLE_STRIP) (-Math::PI).step(Math::PI+0.0001, sStep){|s| GL.Normal(cos(t)*cos(s), cos(t)*sin(s), sin(t)) GL.Vertex(x*cos(t)*cos(s), y*cos(t)*sin(s), z*sin(t)) GL.Vertex(x*cos(t+tStep)*cos(s), y*cos(t+tStep)*sin(s), z*sin(t+tStep)) } GL.End } end end
0 件のコメント:
コメントを投稿