Author Topic: 3D Vertex Rotation  (Read 1153 times)

Offline matchy

  • Prof. Inline
  • *****
  • Posts: 1542
    • View Profile
3D Vertex Rotation
« on: 2014-Nov-05 »
I'm trying to create a wireframe for 3D array of vertices with just X_LINE output (no X_GETMATRIX or X_GETFACES input) although I can't seem to get it right. Any suggestion why this classic function isn't right as the object is skewed at certain angles but okay near the perpendicular? :'(
Code: GLBasic [Select]
        FUNCTION rotation AS _point: ob AS _obj, v AS _point
                LOCAL p AS _point
                p = v
                INC p.x, v.x
                INC p.y, (COS(ob.angle.x) * v.y) - (SIN(ob.angle.x) * v.z)
                INC p.z, (SIN(ob.angle.x) * v.y) - (COS(ob.angle.x) * v.z)             
                INC p.x, (SIN(ob.angle.y) * p.z) + (COS(ob.angle.y) * p.x)
                INC p.y, v.y
                INC p.z, (COS(ob.angle.y) * p.z) - (SIN(ob.angle.y) * p.x)             

                INC p.x, (COS(ob.angle.z) * p.x) - (SIN(ob.angle.z) * p.y)
                INC p.y, (SIN(ob.angle.z) * p.x) + (COS(ob.angle.z) * p.y)             
                INC p.z, v.z
                RETURN p

        FUNCTION wire: ob AS _obj
                IF self.mouse.b1
                        ob.rotate.x = self.mouse.y_axis
                        ob.rotate.y = self.mouse.x_axis
                        INC ob.angle.x, ob.rotate.x
                        INC ob.angle.y, ob.rotate.y
                LOCAL e AS _point
                LOCAL f AS _point
                FOR i = 0 TO ob.vertices - 2
                        ALIAS v AS ob.ver[i]
                        ALIAS u AS ob.ver[i + 1]
                        e = self.rotation(ob, v)
                        f = self.rotation(ob, u)
                        X_LINE  e.x, e.y, e.z,  f.x, f.y, f.z,  1, 0xffffff // v.color.value
« Last Edit: 2014-Nov-05 by matchy »

Offline bigsofty

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 2615
    • View Profile
Re: 3D Vertex Rotation
« Reply #1 on: 2014-Nov-05 »
Just a guess, as there is no perspective transform, so it may look off when rotating without it?


“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC.  As potential programmers, they are mentally mutilated beyond hope of regeneration.”
(E. W. Dijkstra)