一、数学基础知识
1: 角的旋转
如上图:假设a点坐标(a.x,a.y)绕o点为圆心(原点)转到b点,则b的计算公式为
b.x = a.x*cos(angle) - a.y*sin(angle)
b.y = a.x*sin(angle) + a.y*cos(angle)
其中顺时针旋转为正,逆时针旋转为负,角度angle是弧度值,如旋转30度转换为弧度为: angle = pi/180 * 30。
若o不是原点,则可先将a点坐标转换为相对坐标计算,计算结果再加上o点坐标。
参与计算的a点坐标实际应为 a - 0,最终计算公式如下:
b.x = ( a.x - o.x)*cos(angle) - (a.y - o.y)*sin(angle) + o.x
b.y = (a.x - o.x)*sin(angle) + (a.y - o.y)*cos(angle) + o.y
2: 已知三点,计算三角形面积
则三角形面积: S=(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2) /2;
二、类的抽象的语法规则
2.1 Java 中三角函数:java.lang.Math类。
- Math.sin() -- 返回数字的正弦值
- Math.cos() -- 返回数字的余弦值
- Math.tan() -- 返回数字的正切值
- Math.asin() -- 返回数字的反正弦值
- Math.acos() -- 返回数字的反余弦值
- Math.atan() -- 返回数字的反正切值
2.2 通用规则
- 一个类如果是abstract类,则该类不能被实例化(但可以被实现了其所有 Abstract 方法的子类实例化)。
- 子类只有实现了父类所有abstract函数,子类才能实例化,否则该子类还是abstract类。
- 通常abstract 类作为接口使用,用来规范子类的行为和动作。
三、部分具体实现
四、程序参考代码