나는 현재 이것에 대해 약간의 마음이 비어 있습니다. 중심점 주변의 점 위치를 계산해야하는 문제가 있는데, 중심점과 서로 등거리에 있다고 가정합니다.
포인트 수는 가변적이므로 DrawCirclePoints(int x)
간단한 해결책이 있다고 확신하지만 제 삶을 위해 볼 수 없습니다 🙂
답변
중심이 (x0,y0)
이고 반지름이 인 원의 각도 세타에있는 점 r
입니다 (x0 + r cos theta, y0 + r sin theta)
. 이제 theta
0에서 2pi 사이의 균등 한 간격으로 값을 선택 합니다.
답변
반경 길이 r 과 각도 t (라디안)와 원의 중심 (h, k)이 주어지면 다음과 같이 원주에있는 점의 좌표를 계산할 수 있습니다 (이는 의사 코드입니다. 언어):
float x = r*cos(t) + h;
float y = r*sin(t) + k;
답변
다음은 C #을 사용하는 솔루션입니다.
void DrawCirclePoints(int points, double radius, Point center)
{
double slice = 2 * Math.PI / points;
for (int i = 0; i < points; i++)
{
double angle = slice * i;
int newX = (int)(center.X + radius * Math.Cos(angle));
int newY = (int)(center.Y + radius * Math.Sin(angle));
Point p = new Point(newX, newY);
Console.WriteLine(p);
}
}
의 샘플 출력 DrawCirclePoints(8, 10, new Point(0,0));
:
{X=10,Y=0}
{X=7,Y=7}
{X=0,Y=10}
{X=-7,Y=7}
{X=-10,Y=0}
{X=-7,Y=-7}
{X=0,Y=-10}
{X=7,Y=-7}
행운을 빕니다!
답변
위 답변 중 하나를 기본으로 사용하여 Java / Android 예제는 다음과 같습니다.
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF bounds = new RectF(canvas.getClipBounds());
float centerX = bounds.centerX();
float centerY = bounds.centerY();
float angleDeg = 90f;
float radius = 20f
float xPos = radius * (float)Math.cos(Math.toRadians(angleDeg)) + centerX;
float yPos = radius * (float)Math.sin(Math.toRadians(angleDeg)) + centerY;
//draw my point at xPos/yPos
}
답변
원형 경로에 숫자 배치
// variable
let number = 12; // how many number to be placed
let size = 260; // size of circle i.e. w = h = 260
let cx= size/2; // center of x(in a circle)
let cy = size/2; // center of y(in a circle)
let r = size/2; // radius of a circle
for(let i=1; i<=number; i++) {
let ang = i*(Math.PI/(number/2));
let left = cx + (r*Math.cos(ang));
let top = cy + (r*Math.sin(ang));
console.log("top: ", top, ", left: ", left);
}
답변
웹에서이 작업을 수행해야했기 때문에 위 의 @ scottyab 답변 의 coffeescript 버전이 있습니다 .
points = 8
radius = 10
center = {x: 0, y: 0}
drawCirclePoints = (points, radius, center) ->
slice = 2 * Math.PI / points
for i in [0...points]
angle = slice * i
newX = center.x + radius * Math.cos(angle)
newY = center.y + radius * Math.sin(angle)
point = {x: newX, y: newY}
console.log point
drawCirclePoints(points, radius, center)
답변
PHP 솔루션 :
class point{
private $x = 0;
private $y = 0;
public function setX($xpos){
$this->x = $xpos;
}
public function setY($ypos){
$this->y = $ypos;
}
public function getX(){
return $this->x;
}
public function getY(){
return $this->y;
}
public function printX(){
echo $this->x;
}
public function printY(){
echo $this->y;
}
}
function drawCirclePoints($points, $radius, &$center){
$pointarray = array();
$slice = (2*pi())/$points;
for($i=0;$i<$points;$i++){
$angle = $slice*$i;
$newx = (int)($center->getX() + ($radius * cos($angle)));
$newy = (int)($center->getY() + ($radius * sin($angle)));
$point = new point();
$point->setX($newx);
$point->setY($newy);
array_push($pointarray,$point);
}
return $pointarray;
}