Hi Lingo Fellows!
I'm trying to implement the following script into Director.

I keep getting one script error. The area of the error is 'on initBox' and
the 'gCorners' text is sends a script error!
Can anyone help!!!
Zacc

- ---------First of all, we can put the following script into movie script
of
the projector.


 global gCorners, gCenter, gRectList, gRotate, gPlane

on startMovie
  -- initialize lists for a cube
  initBox
end

on frameScript
  -- add to rotation based on mouse location
  gRotate = gRotate - (float(the mouseH-320)/30)*pi()/100

  -- calc plane tilt based on mouse location
  gPlane = - (float(the mouseV-240)/30)*pi()/20
  drawSides
end

on initBox
  -- list of corners with x, y and z coordinates
  gCorners =
[[-60,-60,-60],[60,-60,-60],[60,60,-60],[-60,60,-60],[-60,-60,60],[60,-60,60
],[60,60,60],[-60,60,60]]

  -- the screen center
  gCenter = point(320,240)

  -- list of sides
  -- each side has four corners
  gRectList = [[1,2,3,4],[1,2,6,5],[3,4,8,7],[2,3,7,6],[1,4,8,5],[5,6,7,8]]
end

on drawSides
  -- generate a list of screen points and depths based on the
  -- gCorners list and the transformation to 2d screen coordiantes
  list = []
  repeat with i = 1 to count(gCorners)
    temp = plotPoint(gCorners[i])
    add list,temp
  end repeat

  -- create a quad list that takes four points to display a side of the cube
  quadList = [:]
  repeat with i = 1 to count(gRectList)

    -- get the four corners that make this side
    thisRect = gRectList[i]

    -- get the four screen points to draw
    q = [list[thisRect[1]][2],list[thisRect[2]][2],?
         list[thisRect[3]][2],list[thisRect[4]][2]]

    -- get the closest (depth) screen point
    z = min(list[thisRect[1]][1],list[thisRect[2]][1],?
            list[thisRect[3]][1],list[thisRect[4]][1])

    -- add to list, with closest screen point as the property name
    addProp quadList, z, q
  end repeat

  -- sort list by property name so closest sides get drawn ontop of farther
ones
  sort quadList

  -- draw each side
  repeat with i = 1 to count(gRectList)
    sprite(i).quad = quadList[i]
  end repeat
end




on plotPoint objectInfo
  -- get x, y, and z from objectInfo list
  x = getAt(objectInfo,1)
  y = getAt(objectInfo,2)
  z = getAt(objectInfo,3)

  -- TRANSFORM BY ROTATION AROUND Z

  -- compute the radius
  radius = sqrt(x*x+y*y)

  -- compute the angle
  if x = 0.0 then angle = atan(the maxInteger)
  else angle = atan(float(y)/x)
  if y < 0 then angle = angle + pi()

  -- rotate
  set angle = angle+gRotate

  -- compute new x, y, and z
  realX = radius*cos(angle)
  realZ = radius*sin(angle)
  realY = Z

  -- TRANSFORM BY ROTATION AROUND X

  -- compute then radius
  radius = sqrt(realY*realY+realZ*realZ)

  -- compute the angle
  if realZ = 0 then angle = atan(the maxInteger)
  else angle = (atan(realY/realZ))
  if realZ < 0 then angle = angle + pi()

  -- rotate
  angle = angle - gPlane

  -- compute then new x, y and z
  screenX = realX
  screenY = radius*sin(angle)
  screenZ = radius*cos(angle)

  -- return both z, and the x and y point
  return  [screenZ,point(screenX,screenY)+gCenter]
end


- -----------then, Adding the script into behavior script of the score


on exitFrame
  frameScript
  go to the frame
end













- -----Original Message-----
������: limiar40 b <[EMAIL PROTECTED]>
�ռ���: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
����: 2000-10-26 19:35
����: <lingo-l> 3D with lingo


>HI LIST
>
>1- How can I make a 3d cube(outline) in director with lingo?
>2- It's possible to rotate the cube in any direction, on mouse interaction?
>example: When the mouse rolls to the right side of the stage, the cube
>rotate's to right,
>and if the mouse go's to the left side, the cube rotate's to the left.
>
>
>thaks
>Limiar
>_________________________________________________________________________
>Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>
>Share information about yourself, create your own public profile at
>http://profiles.msn.com.
>
>
>[To remove yourself from this list, or to change to digest mode, go to
>http://www.penworks.com/LUJ/lingo-l.cgi  To post messages to the list,
>email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED])
>Lingo-L is for learning and helping with programming Lingo.  Thanks!]
>


[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/LUJ/lingo-l.cgi  To post messages to the list,
email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED])
Lingo-L is for learning and helping with programming Lingo.  Thanks!]

------------------------------

End of Lingo-L Digest V1 #1686
******************************

[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/LUJ/lingo-l.cgi  To post messages to the list,
email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED])
Lingo-L is for learning and helping with programming Lingo.  Thanks!]

Reply via email to