|
|
@ -1,6 +1,6 @@
|
|
|
|
import * as THREE from "three";
|
|
|
|
import * as THREE from "three";
|
|
|
|
import { Vector3 } from "three";
|
|
|
|
import { Vector3 } from "three";
|
|
|
|
import { curveLinkGroup, equalCurveAndCurve, Vec3DTo2D } from "../Common/CurveUtils";
|
|
|
|
import { curveLinkGroup, equalCurve, Vec3DTo2D } from "../Common/CurveUtils";
|
|
|
|
import { FixIndex } from "../Common/Utils";
|
|
|
|
import { FixIndex } from "../Common/Utils";
|
|
|
|
import { equaln, rotatePoint } from "../Geometry/GeUtils";
|
|
|
|
import { equaln, rotatePoint } from "../Geometry/GeUtils";
|
|
|
|
import { RegionParse, Route } from "../Geometry/RegionParse";
|
|
|
|
import { RegionParse, Route } from "../Geometry/RegionParse";
|
|
|
@ -134,7 +134,7 @@ export class Contour
|
|
|
|
for (let r of routes)
|
|
|
|
for (let r of routes)
|
|
|
|
cs.push(r.curve);
|
|
|
|
cs.push(r.curve);
|
|
|
|
let c = Contour.Combine(cs, false);
|
|
|
|
let c = Contour.Combine(cs, false);
|
|
|
|
if (!equalCurveAndCurve(c, this.Curve) && !equalCurveAndCurve(c, target.Curve))
|
|
|
|
if (!equalCurve(c, this.Curve) && !equalCurve(c, target.Curve))
|
|
|
|
cuGroups.push(cs);
|
|
|
|
cuGroups.push(cs);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -194,7 +194,7 @@ export class Contour
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//在目标分离曲线数组从若有相等的曲线,且相等的线段不连接2区域,则直接加入合并和相交集合中
|
|
|
|
//在目标分离曲线数组从若有相等的曲线,且相等的线段不连接2区域,则直接加入合并和相交集合中
|
|
|
|
//在目标数组中就直接跳过不在添加,在2轮廓有共线部分时需此判断
|
|
|
|
//在目标数组中就直接跳过不在添加,在2轮廓有共线部分时需此判断
|
|
|
|
hasEqualCus = targetCus.some(l => equalCurveAndCurve(pl, l));
|
|
|
|
hasEqualCus = targetCus.some(l => equalCurve(pl, l));
|
|
|
|
if (hasEqualCus)
|
|
|
|
if (hasEqualCus)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//获得共有线段中点2侧的点,判断是否有存在2区域外的点
|
|
|
|
//获得共有线段中点2侧的点,判断是否有存在2区域外的点
|
|
|
@ -222,7 +222,7 @@ export class Contour
|
|
|
|
|
|
|
|
|
|
|
|
for (let pl of targetCus)
|
|
|
|
for (let pl of targetCus)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let hasEqualCus = sourceCus.some(l => equalCurveAndCurve(pl, l));
|
|
|
|
let hasEqualCus = sourceCus.some(l => equalCurve(pl, l));
|
|
|
|
if (hasEqualCus && disLink)
|
|
|
|
if (hasEqualCus && disLink)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -280,7 +280,7 @@ export class Contour
|
|
|
|
//有一样的曲线直接跳过
|
|
|
|
//有一样的曲线直接跳过
|
|
|
|
hasEqualCus = targetCus.some(l =>
|
|
|
|
hasEqualCus = targetCus.some(l =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (equalCurveAndCurve(pl, l))
|
|
|
|
if (equalCurve(pl, l))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
equalCus.add(l);
|
|
|
|
equalCus.add(l);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
@ -375,6 +375,6 @@ export class Contour
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Equal(tar: Contour)
|
|
|
|
Equal(tar: Contour)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return equalCurveAndCurve(this.m_Curve, tar.m_Curve);
|
|
|
|
return equalCurve(this.m_Curve, tar.m_Curve);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|