我正在尝试创建如下图:1/ (x平方-1)
如您所见,该图看起来很不错:

下面的代码绘制了上面的图表。但我不想让垂直渐近线显示出来。
path.moveTo(valx, valy);
path.quadTo(x, y, middle2, middle);
path.lineTo(x, y); // I think this is what causes the vertical asymptotes to show
canvas.drawPath(path, points);
path.reset();通过查看上面的path.lineTo行,我可以看到路径是用一条线将点连接起来的。这就是为什么画垂直渐近线的原因。
我用伪代码实现的想法如下:
//split the x axis into regions and compute a limiting value for each region
Boolean drawMe = false;
//region1: those x values less than the first asymptote = -1
if(Float.compare(x values , first asymptote = -1) < 0 && Float.compare(absolute value of
(Math.abs(x value) - Math.abs(first asymptote) , 0.01f ) > 0)drawMe = true
//region2: those x values between both asymptotes which are -1 and 1:
if(Float.compare(x values , first asymptote) > 0 && Float.compare(x values , second asymptote) < 0
&& Float.compare(absolute value of(Math.abs(x value) - Math.abs(first asymptote) , 0.01f) > 0
&& Float.compare(absolute value of(Math.abs(x value) - Math.abs(second asymptote) , 0.01f) > 0)
drawMe = true;
//region3: those x values greater than the second asymptote = 1:
if(Float.compare(x values , second asymptote) > 0 && Float.compare(absolute value of(Math.abs(x value) - Math.abs(second asymptote) , 0.01f) > 0 ) drawMe = true;
if(drawMe){
path.moveTo(valx, valy);
path.quadTo(x, y, middle2, middle);
path.lineTo(x, y); // I think this is what causes the vertical asymptotes to show
canvas.drawPath(path, points);
path.reset();
}但是,将x轴分割为多个区域将再次绘制完全相同的内容。我需要找到一种方法来阻止渐近线的绘制,我认为最大的问题在于代码行: path.lineTo
有什么建议吗
发布于 2020-03-25 11:47:10
解决方案如下:
首先关闭路径: path.close();然后: canvas.drawPath(path,points);
逻辑是正确的,除了我没有像对其余的点那样变换x值和垂直渐近线值。这就是为什么,所有的路径都是完全相同的。
看到这些图片,我甚至能够画出渐近线:

https://stackoverflow.com/questions/60821634
复制相似问题