BlitzCoder Essentials
•
Home Page
•
About BlitzCoder
•
Contributors
•
Terms of Use
•
Email Us
Main Areas
•
BlitzCoder Chat
•
Discussions
•
Articles/Tutorials
•
Code Database
•
Link Database
•
Showcase Area
•
Worklogs
•
Competitions
Special Areas
•
Undocumented
Other Blitz Sites
•
Blitz Basic Home
•
Blitz Showcase
•
BlitzPlay Library
Forum Login
Username:
Password:
•
Register Now!
BlitzCoder Code Archives Page
Main Codes Page
"3D Vector and matrix library"
, by paranoidpete
Library that deals with vectors and matrices in an OO kind of way. Only really useful for demo coders working in Blitz 2D I guess.
Code
;use it how you want, credit me if you like ;ParanoidPete 2002 Type matrix Field aa#,ab#,ac# Field ba#,bb#,bc# Field ca#,cb#,cc# Field da#,db#,dc# End Type Type vector Field x#,y#,z# End Type Function MIdentity.matrix() m.matrix=New matrix m\aa#=1.00 : m\bb#=1.00 : m\cc#=1.00 Return m End Function Function Negate(v.vector) v\x#=-v\x# : v\y#=-v\y# : v\z#=-v\z# End Function Function MRotate.matrix(xa#,ya#,za#) sx#=Sin(xa#) : sy#=Sin(ya#) : sz#=Sin(za#) cx#=Cos(xa#) : cy#=Cos(ya#) : cz#=Cos(za#) m.matrix=MIdentity() m\aa#=cy#*cz# : m\ab#=cy#*sz# : m\ac#=-sy# m\ba#=sx#*sy#*cz#-cx#*sz# : m\bb#=sx#*sy#*sz#+cx#*cz# : m\bc#=sx#*cy# m\ca#=cx#*sy#*cz#+sx#*sz# : m\cb#=cx#*sy#*sz#-sx#*cz# : m\cc#=cx#*cy# Return m End Function Function MTranslate.matrix(x#,y#,z#) m.matrix=MIdentity() m\da#=x# : m\db#=y# : m\dc#=z# Return m End Function Function MMultiply.matrix(a.matrix,b.matrix) c.matrix=MIdentity() c\aa#=a\aa#*b\aa#+a\ba#*b\ab#+a\ca#*b\ac# c\ba#=a\aa#*b\ba#+a\ba#*b\bb#+a\ca#*b\bc# c\ca#=a\aa#*b\ca#+a\ba#*b\cb#+a\ca#*b\cc# c\da#=a\aa#*b\da#+a\ba#*b\db#+a\ca#*b\dc#+a\da# c\ab#=a\ab#*b\aa#+a\bb#*b\ab#+a\cb#*b\ac# c\bb#=a\ab#*b\ba#+a\bb#*b\bb#+a\cb#*b\bc# c\cb#=a\ab#*b\ca#+a\bb#*b\cb#+a\cb#*b\cc# c\db#=a\ab#*b\da#+a\bb#*b\db#+a\cb#*b\dc#+a\db# c\ac#=a\ac#*b\aa#+a\bc#*b\ab#+a\cc#*b\ac# c\bc#=a\ac#*b\ba#+a\bc#*b\bb#+a\cc#*b\bc# c\cc#=a\ac#*b\ca#+a\bc#*b\cb#+a\cc#*b\cc# c\dc#=a\ac#*b\da#+a\bc#*b\db#+a\cc#*b\dc#+a\dc# Return c End Function Function RotateVector.vector(v.vector,m.matrix) c.vector=New vector c\x#=v\x#*m\aa#+v\y#*m\ba#+v\z#*m\ca#+m\da# c\y#=v\x#*m\ab#+v\y#*m\bb#+v\z#*m\cb#+m\db# c\z#=v\x#*m\ac#+v\y#*m\bc#+v\z#*m\cc#+m\dc# Return c End Function Function NewVector.vector(x#,y#,z#) v.vector=New vector v\x# = x# : v\y# = y# : v\z# = z# Return v End Function Function NormalizeVector(a.vector) mag#=Sqr(a\x#*a\x#+a\y#*a\y#+a\z#*a\z#) a\x#=a\x#/mag# : a\y#=a\y#/mag# : a\z#=a\z#/mag# End Function Function VectorDotProduct#(a.vector,b.vector) Return a\x#*b\x#+a\y#*b\y#+a\z#*b\z# End Function Function VectorCrossProduct.vector(a.vector,b.vector) c.vector=New vector c\x#=a\y#*b\z#-a\z#*b\y# c\y#=a\z#*b\x#-a\x#*b\z# c\z#=a\x#*b\y#-a\y#*b\x# Return c End Function Function VectorAdd.vector(a.vector,b.vector) c.vector=New vector c\x#=a\x#+b\x# : c\y#=a\y#+b\y# : c\z#=a\z#+b\z# Return c End Function Function VectorSubtract.vector(a.vector,b.vector) c.vector=New vector c\x#=a\x#-b\x# : c\y#=a\y#-b\y# : c\z#=a\z#-b\z# Return c End Function
Copyright(c) 2000-2004, BlitzCoder. All Rights Reserved.
Code software created by Krylar's Kreations