唯杰地图 logo唯杰地图
VJMAP
EN

line-arc-circle

vjcad/references/entity/line-arc-circle.md 3.4 KB81 行
原文

本文回答:LineEnt(p1, p2) / CircleEnt(center, radius) / ArcEnt(center, radius, startAng, endAng);圆弧也支持 arc.initBy3Pt(p1, p2, p3) 三点构造。RayEnt(start, angle) 是单向射线、XLineEnt(point, angle) 是双向构造线。

一、Line

const line = new LineEnt([0, 0], [100, 100]);
line.setDefaults();
Engine.addEntities(line);

console.log(line.Length);  // 长度(注意首字母大写 L,按示例)

MCP 参考:vjcad/doc/guide/quick-start.md、vjcad/example/entity/line/01create.js、02properties.js、vjcad/example/input/02getpointwithbase.js(用了 line.Length)。

文档与示例:vjcad/doc/entity/line-ent.md 是详尽 API;常用属性 length、startPoint、endPoint,颜色 color,按示例显示属性 Length 也可用。

二、Circle

const circle = new CircleEnt([50, 50], 30);
circle.setDefaults();
Engine.addEntities(circle);

console.log(circle.center, circle.radius);

MCP 参考:vjcad/doc/guide/quick-start.md、vjcad/example/entity/circle/01create.js ~ 03transform.js、vjcad/doc/entity/circle-ent.md。

三、Arc

// 圆心 + 半径 + 起止角(弧度)
const arc = new ArcEnt([100, 100], 50, 0, Math.PI / 2);
arc.setDefaults();
Engine.addEntities(arc);

console.log(arc.startPoint, arc.endPoint, arc.length);

// 三点定弧(initBy3Pt 收 Point2D 对象,不是数组——传数组会因缺 .x/.y 得到 NaN)
const arc2 = new ArcEnt();
arc2.initBy3Pt(new Point2D(0, 0), new Point2D(50, 50), new Point2D(100, 0));
arc2.setDefaults();
Engine.addEntities(arc2);

MCP 参考:vjcad/doc/guide/quick-start.md、vjcad/example/entity/arc/01create.js、02by3points.js、03properties.js、04transform.js、vjcad/doc/entity/arc-ent.md。

四、Ray / XLine

const ray   = new RayEnt([100, 0], 0);          // 单向射线,水平向右
const xline = new XLineEnt([100, 0], Math.PI/2); // 双向构造线,垂直
ray.setDefaults();
xline.setDefaults();
Engine.addEntities([ray, xline]);

MCP 参考:vjcad/example/entity/all/01entities.js、vjcad/example/entity/ray/01create.js ~ 02transform.js、vjcad/example/entity/xline/01create.js ~ 02grid.js、vjcad/doc/entity/ray-xline-ent.md。

五、变换

ent.move([0, 0], [10, 0]);            // 平移
ent.rotate([cx, cy], Math.PI / 6);    // 绕点旋转
ent.scale([cx, cy], 2);               // 缩放
ent.mirror([0, 0], [1, 0]);           // 镜像(沿 x 轴)

详见 edit/。

反例

  • ArcEnt(center, radius, 0, 90) 把 90 当度数:startAng / endAng 是弧度。用 Math.PI/2 表示 90°。
  • new RayEnt([0, 0], [1, 0]) 把第二参当方向向量:实际是 angle(弧度)。
  • 没 setDefaults() 直接 Engine.addEntities:颜色、图层、线型等不会被默认填充。

参考(官方文档 MCP)

  • 文档:vjcad/doc/entity/line-ent.md、vjcad/doc/entity/circle-ent.md、vjcad/doc/entity/arc-ent.md、vjcad/doc/entity/ray-xline-ent.md、vjcad/doc/guide/quick-start.md
  • 示例:vjcad/example/entity/line/01create.js ~ 04color.js、vjcad/example/entity/circle/01create.js ~ 03transform.js、vjcad/example/entity/arc/01create.js ~ 04transform.js、vjcad/example/entity/ray/01create.js ~ 02transform.js、vjcad/example/entity/xline/01create.js ~ 02grid.js