修正轮廓不等比例缩放错误的问题.(采用拉伸夹点的方式进行缩放)

pull/298/head
ChenX 5 years ago
parent 5e7fcb9354
commit e7d69a5def

@ -62,37 +62,24 @@ export class Contour
* @param {number} ref ,
* @param {number} dist
* @param {string} dir x y z
* @returns
* @memberof Contour
*/
UnEqualProportionScale(ref: number, dist: number, dir: string)
UnEqualProportionScale(ref: number, dist: number, dir: "x" | "y")
{
let cu = this.m_Curve;
if (cu instanceof Polyline)
{
for (let i = 0; i <= cu.EndParam; i++)
let lineData = cu.LineData;
let length = lineData.length;
let moveIndexs: number[] = [];
for (let i = 0; i < length; i++)
{
let p = cu.GetPointAtParam(i);
if (p[dir] > ref)
{
let vec = new Vector3();
vec[dir] = dist;
p.add(vec).applyMatrix4(cu.OCSInv);
cu.SetPointAt(i, Vec3DTo2D(p));
//下一点不拉伸时修正凸度
if (!equaln(cu.GetBuilgeAt(i), 0) && i + 1 <= cu.EndParam)
{
let p2 = cu.GetPointAtParam(i + 1);
if (p2[dir] < ref)
{
let derv = cu.GetFistDeriv(i + 1).negate();
let chord = p.sub(cu.GetPointAtParam(i + 1));
let ang = getCirAngleByChordAndTangent(derv, chord);
cu.SetBulgeAt(i, ang / 4);
}
}
}
if (lineData[i].pt[dir] > ref)
moveIndexs.push(i);
}
let moveVec = new Vector3();
moveVec[dir] = dist;
cu.MoveStretchPoints(moveIndexs, moveVec);
return true;
}
return false;

@ -318,9 +318,6 @@ export class Polyline extends Curve
/**
* 线,使线线. for(i<EndParam)...
*
* @readonly
* @memberof Polyline
*/
get EndParam()
{
@ -329,9 +326,7 @@ export class Polyline extends Curve
//闭合且起点不等于终点
if (this.m_ClosedMark &&
!this.m_LineData[0].pt.equals(arrayLast(this.m_LineData).pt))
{
return this.m_LineData.length;
}
return this.m_LineData.length - 1;
}
get Area2()

Loading…
Cancel
Save