*(缩放旋转)
📄字数 674
👁️阅读量 加载中...
功能描述
将几何对象的每个坐标点与给定的POINT参数进行复数乘法运算,实现缩放与旋转的组合变换。适用于POINT、BOX、PATH和CIRCLE等几何类型。*
不仅可作为几何运算符,亦可作为算术运算符 *
。
提示
将点视为由实部和虚部组成的复数,再将其两个复数进行乘法运算。
若将第二个 POINT 解释为向量,则该操作等同于将对象按向量的长度进行缩放,并以其与 x 轴的夹角为基准,绕原点进行逆时针旋转。
语法格式
L_OPERAND_TYP * R_OPERAND_TYP
输入参数
L_OPERAND_TYP(左操作数类型) | R_OPERAND_TYP(右操作数类型) | RET_TYPE(返回类型) |
---|---|---|
POINT | POINT | POINT |
BOX | POINT | BOX |
PATH | POINT | PATH |
CIRCLE | POINT | CIRCLE |
输出结果
输出结果的类型根据输入参数类型决定,表1展示常用数据类型。
示例
sql
-- POINT复数乘法运算
SQL> SELECT POINT('(2.0,0)') * POINT('(0,2.0)');
+-------+
| EXPR1 |
+-------+
| (0,4) |
+-------+
-- 执行BOX(矩形)与POINT的复数乘法运算
SQL> SELECT BOX(POINT('(0,1)'),POINT('(1,0)')) * POINT('(0,2.0)');
+--------------+
| EXPR1 |
+--------------+
| (0,2),(-2,0) |
+--------------+
--PATH 几何PATH(路径)与POINT(点)进行复数乘法运算,实现几何旋转的效果。
SQL> SELECT PATH('((0,0),(1,0),(1,1))') * point(cosd(45), sind(45));
+-----------------------------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------------------------+
| ((0,0),(0.7071067811865475,0.7071067811865475),(0,1.414213562373095)) |
+-----------------------------------------------------------------------+
-- 执行CIRCLE(圆形)与POINT的复数乘法运算
SQL> SELECT CIRCLE('<(3,4),2>') * POINT('(1,2)');
+---------------------------------+
| EXPR1 |
+---------------------------------+
| <(-5,10),4.47213595499958> |
+---------------------------------+