2010-01-06 2 views
0

다음 코드를 사용하여 정삼각형을 만들려고합니다.하지만 기대했던 것을 보지 못했습니다.
무대에 삼각형이 그려지는 것을 볼 수는 있지만 볼 수는 없습니다. 화면에 tri 스프라이트의 위치와 관련해서 뭔가 잘못되어 있어야한다고 생각합니다.AS3 : 수학 관련 - 등변 삼각형 구성

public class test_drawing_triangle extends Sprite 
{ 
    public function test_drawing_triangle() 
    { 
     var tri:Sprite = new Sprite;  
     var nextx:int; 
     var nexty:int; 
     var prevx:int; 
     var prevy:int; 
     var angle:Number; 
     var radius:Number; 
     var deg:int; 
     var i:int; 

     radius = 10; 
     // tri.x = stage.stageWidth/2; 
     tri.y = 50; 

     tri.graphics.clear(); 
     tri.graphics.beginFill(0x000000, 0.5); 
     tri.graphics.moveTo(0,0); 

     for(deg = 0; deg < 360; deg += 120) 
     { 
      angle = deg * Math.PI/180; 
      nextx = Math.cos(angle) * radius; 
      nexty = Math.sin(angle) * radius; 
      tri.graphics.lineTo(nextx, nexty); 
     } 
     tri.graphics.endFill(); 
     addChild(tri); 
    } 
} 

업데이트 :. 나는 지금이 채워지지 않고있는 삼각형을 볼 수 있습니다

일반적으로-올바른 형태를 갖고있는 것 같아요,하지만 3 오히려, 양면 일을 위해 내가 기대 4보다. 누군가가 이것을 컴파일하고 내가 뭘 설명하는지 보는데 초를 걸릴 수 있다면 정말 도움이 될 것이다.

+2

"작동하지 않습니다"는 매우 유용한 설명이 아닙니다. 당신이 가진 문제가 무엇인지 더 정확하게 묘사 할 수 있습니까? –

+0

나는 그것이 "작동하지 않는다"고 말하지는 않았지만 나는 내 질문을 업데이트했다. 그것은 매우 유용한 비판도 아닙니다. – jml

+0

색상 좌표 조정 시도 –

답변

1

내가하고 싶은 것을 이해하고 있는지 모르겠지만 삼각형 모서리에 원이 있기를 원한다면 잘 모릅니다. 변경해야 할 것보다

tri.graphics.drawCircle (0, 0, 2);

tri.graphics.drawCircle 행 (nextx, nexty, 2);

drawCircle는 Y 절대 X를 취하고의 moveTo에 대해 상관하지 않는다

편집 -

deg = 30; 
angle = (deg * Math.PI)/180.0; 
nextx = Math.cos(angle) * radius; 
nexty = Math.sin(angle) * radius; 
(tri.graphics as Graphics).moveTo(nextx, nexty); 
for(deg = 150; deg < 420; deg += 120) 
{ 
angle = (deg * Math.PI)/180.0; 
nextx = Math.cos(angle) * radius; 
nexty = Math.sin(angle) * radius; 
(tri.graphics as Graphics).lineTo(nextx, nexty);  
} 
+0

확인; 그 언급에 감사드립니다. – jml

+0

와우! 완전히 일했다! 왜 '그래픽'을 사용해야합니까? 필자는 문서에서 확실히 살펴볼 것입니다. 하지만 전에이 구문이 사용되는 것을 보지 못했습니다. – jml

+1

혼란에 빠져서 미안해, 너는 꼭 할 필요가 없어, 그냥 그 과정에서 무언가를 체크 할 필요가 있었고, 그것을 버려 뒀다. 자, 이제 자정이 지난다. –

0

이 코드는 삼각형의 포인트를 중심으로 한 3 개의 원을 그리는 것과 같습니다. 그런 경우 그런 경우가 아니라면, 다음

tri.graphics.lineTo(nextx, nexty); 

tri.graphics.moveTo(nextx, nexty); 
tri.graphics.drawCircle(0, 0, 2); 

을 대체, 당신이 우리가 잘못 됐을 무슨 더 나은 아이디어가있을 수 있습니다보고있는 무엇을 지정하십시오.

+0

지금 당장은 _anything_이 보이지 않습니다. 몇 가지 문제가 있습니다 ... 하나는 이미지가 그려지기를 기대할 수없는 부분입니다. 선/점은 중요하지 않습니다. 그 좌표는 내가 옳은 좌표입니다. 기본적으로 앵커 (xy)가 삼각형의 가운데에 있고 화살표가 위쪽을 가리키고 싶습니다 ... 도움이 될 경우에 대비하여 코드를 변경했습니다. – jml

+0

확인; 위 코드를 업데이트했습니다. 삼각형이 그려지는 것을 볼 수는 있지만 삼각형이 완전히 채워지지 않은 것처럼 보입니다.나는 당신의 충고를 받아 lineTo (nextx, nexty)를 사용했지만 beginFill (0x000000, 0.5)을 호출 할 때 정확한 위치에서 시작하지 않는 것처럼 보입니다. – jml

0

은 사용하는 이유는 특별한 이유가 있나요 루프 대신에이 코드를 사용 삼각형을 그리는 각?

이렇게하면 정사각형 크기의 정삼각형 (세 개의 3D 점으로 정의 됨)을 한 번 하드 코딩하고 크기 및 번역 작업을 사용하여 올바른 크기 및 위치로 지정합니다.

+0

한 가지 이유는 내가 어떻게하는지 배우고 싶었 기 때문입니다. 다른 점은 지금 제가 요점을 가지고있을 것입니다; 그래서 나는 그것을 하드 코딩 할 수있다. 궁극적으로 상태 사이에서 변형하거나 인수/속성에 따라보다 다재다능한 모양을 원할 수 있습니다. 삼각형 만 원한다면 요점을 봅니다. 그러나 ... 당신도 이것을 확장/변환/변환 할 수 있습니다. – jml