Нарисуйте специальную фигуру на android холсте - PullRequest
0 голосов
/ 15 апреля 2020

Я изо всех сил пытаюсь нарисовать эту форму на android холсте. Я уже использовал все, что можно найти здесь. но это работает на одних углах, а не на других.

enter image description here

Допустим, эту фигуру можно нарисовать при определенном угле (в примере = 90 °). У нас также есть координаты трех точек формы (A, B и C)

Вот код, который я сейчас использую:

     // (cx,cy) is the point A 
     // (pos2LegX, pos2LegY) is the point C 
     // radDirection is the drawn example 90° 
     float radDirection = (float) (Math.toRadians(this.rad));
     float pos2LegX = (float) (cx + radius * Math.sin(radDirection)) ;
     float pos2LegY = (float) (cy - radius * Math.cos(radDirection)) ;

     // (arcPosX, arcPosY) is the point B
     float arcPosX = pos2LegX + (float) ((radius/2) * Math.abs(Math.cos(radDirection))) ;
     float arcPosY = pos2LegY - (float) ((radius/2) * Math.abs(Math.sin(radDirection))) ;

     // the rect to use with the drawers
     final RectF oval = new RectF();
     oval.set(pos2LegX , pos2LegY - radius/4, pos2LegX + radius/2, pos2LegY+ radius/4);

     // draw the shape 
     // draw AC
     canvas.drawLine(cx,cy,pos2LegX, pos2LegY ,paint);

     // draw the arc CB
     int startAngle = (int) (180 / Math.PI * Math.atan2(arcPosY - pos2LegY, arcPosX - pos2LegX));
     canvas.drawArc(oval,startAngle,180,false,paint);

     // draw BA
     canvas.drawLine(arcPosX,arcPosY,cx,cy,paint);

Это может работать, например, если radDirection = 180, но если radDirection = 000, то это дает следующее: enter image description here

Но здесь форма должна быть в противоположном направлении с ar c вогнутым к центру cx, cy.

Любое решение было бы большой помощью для меня.

Заранее спасибо :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...