Рисование контуров от точки, где каждый путь удален от начальной точки - PullRequest
1 голос
/ 13 марта 2019

У меня возникли некоторые проблемы, когда я пытался понять, как рисовать пути из точки на холсте, причем начало каждого пути одинаково удалено от начальной точки. Чтобы проиллюстрировать, что я имею в виду, код, который у меня есть, может сгенерировать это: 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);
    }

}

Есть ли простое решение для этого?

1 Ответ

1 голос
/ 13 марта 2019

Поскольку вы хотите иметь крошечное расстояние между смещением линии и центральной точкой, вы можете определить начальные координаты следующим образом:

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

Внутри цикла for в onDraw():

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);
...