题目
本题来自今天头条的笔试:
有一个n边形(P0, P1, ..., Pn), 每一条边皆为垂直或水平线段。现给定数值k,以P0为起点将n边形的周长分为k段,每段的长度相等,请打印出k等分点的坐标(T0, T1, ..., Tk)的坐标。
分析
首先,假设n边形在二维平面的上,每个顶点具有X坐标和Y坐标。
其次,n边形的边具有特殊的性质,每条边皆为垂直或水平线段。因此,如果我们计算线段长度时,可以通过线段端点的X坐标或Y坐标相减得到。
最后,由于需要计算n边形周长和等分点坐标,这需要计算两个相邻点的距离,考虑到这个特性,我们可以采用线性结构来进行存储。
接下来我们分析一下具体实现。
Java实现
首先我们来实现表示n边形顶点坐标的类:
public class Coordinate {
private double x, y;
public Coordinate(double x, double y) {
super();
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
@Override
public String toString() {
return "x = " + x + ", y=