line.monkey2 502 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. Namespace std.geom
  2. #rem monkeydoc @hidden
  3. #end
  4. Alias Linef:Line<Float>
  5. #rem monkeydoc @hidden
  6. #end
  7. Struct Line<T>
  8. Field o:Vec3<T>
  9. Field d:Vec3<T>
  10. Method New()
  11. End
  12. Method New( o:Vec3<T>,d:Vec3<T> )
  13. Self.o=o;Self.d=d
  14. End
  15. Operator-:Line()
  16. Return New Line( o,-d )
  17. End
  18. Operator+:Line( v:Vec3<T> )
  19. Return New Line( o+v,d )
  20. End
  21. Operator-:Line( v:Vec3<T> )
  22. Return New Line( o-v,d )
  23. End
  24. Method Nearest:Vec3<T>( p:Vec3<T> )
  25. Return o+d*( d.Dot( p-o )/d.Dot( d ) )
  26. End
  27. End