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!]