AS3: математика - построение равностороннего треугольника - PullRequest
0 голосов
/ 07 января 2010

Я пытаюсь построить равносторонний треугольник с помощью следующего кода, но я не вижу того, что ожидал.
Я ожидаю увидеть треугольник, нарисованный на сцене, но я его не вижу. Я думаю, что должно быть что-то не так с точки зрения расположения три-спрайта на экране.

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. Если бы кто-то мог на секунду скомпилировать это и посмотреть, что я описываю, это действительно помогло бы.

Ответы [ 3 ]

1 голос
/ 07 января 2010

Я не уверен, что понимаю, что вы пытаетесь сделать, но хотите ли вы, чтобы круги были расположены по углам треугольника. чем нужно поменять

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

до

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

drawCircle принимает абсолютные x, y и не заботится о перемещении на

РЕДАКТИРОВАТЬ - используйте этот код вместо вашего цикла

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 голосов
/ 07 января 2010

Есть ли особая причина, по которой вы используете углы для рисования треугольника?

Если бы я это сделал, я бы просто жестко запрограммировал равносторонний треугольник единичного размера (определяемый как три 3d точки), а затем использовал бы операции масштабирования и перевода, чтобы поместить его в правильный размер и положение.

0 голосов
/ 07 января 2010

Этот код выглядит как рисунок трех окружностей с центром в точках вашего треугольника. Если это так, то замените

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

с

tri.graphics.lineTo(nextx, nexty);

Если это не так, укажите, что вы видите, чтобы у нас было лучшее представление о том, что пошло не так.

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