首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中绘制断开的路径

在Android中绘制断开的路径
EN

Stack Overflow用户
提问于 2020-03-24 05:14:38
回答 1查看 63关注 0票数 1

我正在尝试创建如下图:1/ (x平方-1)

如您所见,该图看起来很不错:

下面的代码绘制了上面的图表。但我不想让垂直渐近线显示出来。

代码语言:javascript
复制
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行,我可以看到路径是用一条线将点连接起来的。这就是为什么画垂直渐近线的原因。

我用伪代码实现的想法如下:

代码语言:javascript
复制
//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

有什么建议吗

EN

回答 1

Stack Overflow用户

发布于 2020-03-25 11:47:10

解决方案如下:

  • 确实根据垂直渐近线所在的位置将x轴分割为多个区域,当点被添加到路径时,检查该点的x值不在垂直渐近线的某个阈值内
  • 不重置路径,也不绘制路径。等待for循环添加除落入垂直渐近线的特定阈值内的所有点以外的所有点
  • 通过不将这些点添加到路径,路径将被断开并显示正确的图形
  • 在for循环完成将点添加到路径后,绘制路径

首先关闭路径: path.close();然后: canvas.drawPath(path,points);

逻辑是正确的,除了我没有像对其余的点那样变换x值和垂直渐近线值。这就是为什么,所有的路径都是完全相同的。

看到这些图片,我甚至能够画出渐近线:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60821634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档