vector_products.sf 613 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/ruby
  2. class MyVector(x, y, z) {
  3. method ∙(vec) {
  4. [self{@|:x..:z}] »*« [vec{@|:x..:z}] «+»;
  5. }
  6. method ⨉(vec) {
  7. MyVector(self.y*vec.z - self.z*vec.y,
  8. self.z*vec.x - self.x*vec.z,
  9. self.x*vec.y - self.y*vec.x);
  10. }
  11. method to_s {
  12. "(#{x}, #{y}, #{z})";
  13. }
  14. }
  15. var a = MyVector(3, 4, 5);
  16. var b = MyVector(4, 3, 5);
  17. var c = MyVector(-5, -12, -13);
  18. say "a=#{a}; b=#{b}; c=#{c};";
  19. say "a ∙ b = #{a ∙ b}";
  20. say "a ⨉ b = #{a ⨉ b}";
  21. say "a ∙ (b ⨉ c) = #{a ∙ (b ⨉ c)}";
  22. say "a ⨉ (b ⨉ c) = #{a ⨉ (b ⨉ c)}";