唯杰地图 logo唯杰地图
VJMAP
EN

rotate-scale

vjcad/references/edit/rotate-scale.md 2.2 KB84 行
原文

本文回答:旋转 = entity.rotate(basePoint, angle),basePoint 用 new Point2D(x, y),angle 是弧度;缩放 = entity.scale(basePoint, factor)。命令版 ROTATE / SCALE,支持 R(参考)模式,ROTATE 还支持 C 复制旋转。

一、旋转

const rect = createRect(40, 40, 40, 20);
rect.color = 1;
Engine.addEntities(rect);

const basePoint = new Point2D(60, 50);

const rect45 = rect.clone();
rect45.rotate(basePoint, Math.PI / 4);
rect45.color = 2;

const rect90 = rect.clone();
rect90.rotate(basePoint, Math.PI / 2);
rect90.color = 3;

Engine.addEntities([rect45, rect90]);
Engine.regen();

MCP 参考:vjcad/example/edit/03rotate.js。

angle 是弧度:Math.PI / 2 ↔ 90°;正值逆时针;负值顺时针。

二、缩放

const basePoint = new Point2D(0, 0);

const c = new CircleEnt([50, 50], 20);
c.setDefaults();
c.color = 1;
Engine.addEntities(c);

const half = c.clone();
half.scale(basePoint, 0.5);
half.color = 2;

const big  = c.clone();
big.scale(basePoint, 1.5);
big.color = 3;

Engine.addEntities([half, big]);
Engine.regen();

MCP 参考:vjcad/example/edit/04scale.js。

三、命令版

Engine.editor.executerWithOp('ROTATE');
Engine.editor.executerWithOp('SCALE');

ROTATE 命令选项:

选项 说明
C 复制模式(旋转并保留原对象)
R 参照模式(指定参照角度)

SCALE 命令选项:

选项 说明
R 参考模式(参考距离 + 新长度计算比例)

MCP 参考:vjcad/doc/edit/edit-commands.md。

反例

  • entity.rotate(basePoint, 45) 把 45 当度数:是弧度。用 Math.PI / 4。
  • basePoint 传 [x, y] 数组:示例用 Point2D,但[x,y] 数组同样生效(内部转 Point2D),scale([0,0],0.5) 与 scale(new Point2D(0,0),0.5) 结果一致。
  • 没 Engine.regen():屏幕看不到变化。

参考(官方文档 MCP)

  • 文档:vjcad/doc/edit/index.md、vjcad/doc/edit/edit-commands.md
  • 示例:vjcad/example/edit/03rotate.js、vjcad/example/edit/04scale.js