java - 从每条路径都远离初始点的点绘制路径

标签 java android canvas path point

我在尝试弄清楚如何从 Canvas 上的一个点绘制路径时遇到了一些麻烦,每条路径的起点与初始点的距离相等。为了说明我的意思,我到目前为止的代码能够生成这个:enter image description here

期望的结果是这样的:

enter image description here

我的代码:

int n = 3;
int r;
double x;
double y;
point1 = new Point(mWidth/2, mHeight/2);
double angle;
double angleFactor;

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for (int i = 0; i < 3; i++){
        angleFactor = 2 * Math.PI / n;
        angle = i * angleFactor;
        x = (point1.x) + r * Math.cos(angle);
        y = (point1.y) + r * Math.sin(angle);

        //Draw paths
        path.reset();
        path.moveTo(point1.x, point1.y);
        path.lineTo((float) x, (float) y);
        canvas.drawPath(path, paint);
    }

}

有没有简单的解决方法?

最佳答案

由于您希望直线的偏移量与中心点之间的距离很小,因此可以这样定义起始坐标:

double xStart, xEnd;
double yStart, yEnd;
double offsetFraction = 0.1;

onDraw()for 循环中:

double lengthX = r * Math.cos(angle);
double lengthY = r * Math.sin(angle);

xStart = (point1.x) + offsetFraction * lengthX;
yStart = (point1.y) + offsetFraction * lengthY;
xEnd = (point1.x) + lengthX;
yEnd = (point1.y) + lengthY;

//Draw paths
path.reset();
path.moveTo((float) xStart, (float) yStart);
path.lineTo((float) xEnd, (float) yEnd);
canvas.drawPath(path, paint);

关于java - 从每条路径都远离初始点的点绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150380/

相关文章:

java - 使用 fft 在 Java 中实现我自己的低通滤波器

android - 需要设计一个android应用的架构设计

javascript - 我尝试用 Canvas 来做到这一点。可以做到?

android - whatsApp 发送消息让用户在 ios 中编辑消息,在 android 中它没有

python - 如何使用 Python 在 Canvas 上手绘?

Javascript - 使用宽度和高度的百分比在 Canvas 上绘制

java - map : check wether a point is on polyline or not

java - PDF文档可以包含 "unreachable"内容吗?

JAVA:如何使用 JMenuItem 和 Jbutton 上的监听器来计算费率

java - 从android中的另一个服务调用一个服务