summaryrefslogtreecommitdiffhomepage
path: root/adapt_triangle.rb
diff options
context:
space:
mode:
Diffstat (limited to 'adapt_triangle.rb')
-rw-r--r--adapt_triangle.rb133
1 files changed, 133 insertions, 0 deletions
diff --git a/adapt_triangle.rb b/adapt_triangle.rb
new file mode 100644
index 0000000..e091ec1
--- /dev/null
+++ b/adapt_triangle.rb
@@ -0,0 +1,133 @@
+# frozen_string_literal: true
+
+module AdaptTriangle
+
+ def _translate_x(x)
+ @x1 += x
+ @x2 += x
+ @x3 += x
+ end
+
+ def _translate_y(y)
+ @y1 += y
+ @y2 += y
+ @y3 += y
+ end
+
+ def _rotate(angle)
+ @x1 = ((@x1) * Math.cos(angle)) - ((@y1) * Math.sin(angle))
+ @y1 = ((@x1) * Math.sin(angle)) + ((@y1) * Math.cos(angle))
+ @x2 = ((@x2) * Math.cos(angle)) - ((@y2) * Math.sin(angle))
+ @y2 = ((@x2) * Math.sin(angle)) + ((@y2) * Math.cos(angle))
+ @x3 = ((@x3) * Math.cos(angle)) - ((@y3) * Math.sin(angle))
+ @y3 = ((@x3) * Math.sin(angle)) + ((@y3) * Math.cos(angle))
+ end
+
+ def _update
+ angle = Camera.angle * (Math::PI / 180)
+ @x1 = ((x + x1 + Camera.x) * Math.cos(angle)) - ((y + y1 + Camera.y) * Math.sin(angle))
+ @y1 = ((x + x1 + Camera.x) * Math.sin(angle)) + ((y + y1 + Camera.y) * Math.cos(angle))
+ @x2 = ((x + x2 + Camera.x) * Math.cos(angle)) - ((y + y2 + Camera.y) * Math.sin(angle))
+ @y2 = ((x + x2 + Camera.x) * Math.sin(angle)) + ((y + y2 + Camera.y) * Math.cos(angle))
+ @x3 = ((x + x3 + Camera.x) * Math.cos(angle)) - ((y + y3 + Camera.y) * Math.sin(angle))
+ @y3 = ((x + x3 + Camera.x) * Math.sin(angle)) + ((y + y3 + Camera.y) * Math.cos(angle))
+ end
+
+ def _x1
+ @x1
+ end
+
+ def _y1
+ @y1
+ end
+
+ def x
+ @x ||= x1
+ end
+
+ def x=(x)
+ #diff = x - self.x
+ #self.x1 += diff
+ #self.x2 += diff
+ #self.x3 += diff
+ @x = x
+ _update
+ end
+
+ def y
+ @y ||= y1
+ end
+
+ def y=(y)
+ #diff = y - self.y
+ #self.y1 += diff
+ #self.y2 += diff
+ #self.y3 += diff
+ @y = y
+ end
+
+ #undo rotation
+ def x1
+ @virtual_x1 ||= @x1
+ #(@x1 * Math.cos(-Camera.angle)) - (@y1 * Math.sin(-Camera.angle)) - Camera.x
+ end
+
+ #difference between 'x1' and undone rotation > then rotated
+ def x1=(x1)
+ @virtual_x1 = x1
+ _update
+ #temp = self.x1
+ #@x1 += ((x1 - temp) * Math.cos(Camera.angle))
+ #@y1 += ((x1 - temp) * Math.sin(Camera.angle))
+ end
+
+ def y1
+ @virtual_y1 ||= @y1
+ #(@x1 * Math.sin(-Camera.angle)) + (@y1 * Math.cos(-Camera.angle)) - Camera.y
+ end
+
+ def y1=(y1)
+ @virtual_y1 = y1
+ _update
+ #temp = self.y1
+ #@x1 += -((y1 - temp) * Math.sin(Camera.angle))
+ #@y1 += ((y1 - temp) * Math.cos(Camera.angle))
+ end
+
+ def x2
+ @virtual_x2 ||= @x2
+ end
+
+ def x2=(x2)
+ @virtual_x2 = x2
+ _update
+ end
+
+ def y2
+ @virtual_y2 ||= @y2
+ end
+
+ def y2=(y2)
+ @virtual_y2 = y2
+ _update
+ end
+
+ def x3
+ @virtual_x3 ||= @x3
+ end
+
+ def x3=(x3)
+ @virtual_x3 = x3
+ _update
+ end
+
+ def y3
+ @virtual_y3 ||= @y3
+ end
+
+ def y3=(y3)
+ @virtual_y3 = y3
+ _update
+ end
+end
+