java确定图中的非连续性
我在Java
和iOS swift
中都做了一个绘图应用程序,在这两个应用程序中,我都遇到了确定一个图是否连续的问题。为了进一步解释,我绘制图形的方法是对函数的点进行采样,并在它们之间连接线。
伪代码:
func plot(Function f)
for i=min ; i<max ; i+=step
plotPoint(i,f.eval(i))
drawLine(i,f.eval(i),i+step,f.eval(i+step))
对于连续函数,这就像一个魅力,但当我遇到非连续性时,函数的非连续部分仍将通过一条线连接。示例sec(x)
:
以下是paintComponent(g)
(github here)中的Java代码:
for(int i=0; i<ptx.size(); i++){
if(i!=ptx.size()-1){
if(showPoints){
drawPoint(g2d, ptx.get(i),pty.get(i));
}
if(connectPoints && i!=ptx.size()-1){
g2d.drawLine((int)(origin_x+(ptx.get(i)*ppp)/x_scale), (int)(origin_y-(pty.get(i)*ppp)/y_scale),
(int)(origin_x+(ptx.get(i+1)*ppp)/x_scale), (int)(origin_y-(pty.get(i+1)*ppp)/y_scale));
}
}
}
一切似乎都很好。我的问题是如何防止在有不连续的地方画线?没有代数解这可能吗?最后,决定是否划界的最安全、最快的方法是什么
共 (0) 个答案