Author:赵志乾
Date:2024-06-25
Declaration:All Right Reserved!!!
1. 类图
2. 代码解析
//***********************核心字段************************
// MarkupSegment起点坐标
double startX;
double startY;
double startZ;
double endX;
double endY;
double endZ;
//***********************构造函数**************************
// 指定MarkupSegment的起止点坐标
MarkupSegment(double startX, double startY, double startZ, double endX, double endY, double endZ) {
this.startX = startX;
this.startY = startY;
this.startZ = startZ;
this.endX = endX;
this.endY = endY;
this.endZ = endZ;
}
// 设置MarkupSegment起点坐标
public final void setStart(double x, double y, double z) {
// MarkupSegment在initialize之后不允许再修改
this.checkForModify();
this.startX = x;
this.startY = y;
this.startZ = z;
}
// 设置MarupSegment终点坐标
public final void setEnd(double x, double y, double z) {
// MarkupSegment在initialize之后不允许再修改
this.checkForModify();
this.endX = x;
this.endY = y;
this.endZ = z;
}
//*******************************MarkupSegment上的点**************************
// 获取MarkupSegment的长度
public final double length() {
return super.length();
}
// 获取距离起点偏移量为offset的点坐标
public final Position getPositionAtOffset(double offset, Position out) {
// 校验offset是否合法
if(offset< -1.0E-4 || offset>this.length()+1.0E-4){
error("offset is out of range!");
}
if(out==null){
out = new Position();
}
// 子类决定计算方式
this.getPositionAtOffsetInternal(offset, out);
return out;
}