0

2 つの角度と辺の長さ (または単なる直線) を使用して三角形を描画したいのですが、ActionScript のコードを教えてください。また、各角にはその角の角度が必要です。前もって感謝します

申し訳ありませんが、画像をアップロードできません..

ABC という名前の通常の三角形を想像してみてください。ABの長さとA、Bの角度を指定して三角形を描きたい.たとえば、角に「a = 45度」と「b = 45度」(他の角度は90度)と「AB = 20 ピクセル」の場合、三角形を描画する必要があります。

4

1 に答える 1

0

数学の楽しみ:)

Spriteクラスには、Flash Graphics APIを使用して描画できるグラフィックスプロパティがあります。基本的な線画を描くには、ペンの先を考えてください。先端を x、y 座標に移動し、他の座標に線を引くことができます。これを行うと、ペンの先端が新しい座標に置かれます。Flash では、座標平面の原点 (0,0) は左上にあります。

メソッドで開始座標を設定して三角形を描きましたmoveTo()。次に、開始座標から描画される 2 つの線の終点を計算しました。最後に、メソッドで線分を描画しlineTo()ます。

package
{
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    public class DrawTriangle extends Sprite
    {
        private var startX:Number = 200;
        private var startY:Number = 200;

        private var angleA:Number = 10;
        private var angleB:Number = 90;
        private var lengthOfSideC:Number = 200;

        public function DrawTriangle()
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            var angleAInRadians:Number = angleInRaidans(angleA);
            var angleBInRadians:Number = angleInRaidans(angleB);
            var angleCInRadians:Number = angleInRaidans(180 - angleA - angleB);
            var lengthOfSideA:Number = Math.sin(angleAInRadians) * lengthOfSideC / Math.sin(angleCInRadians);
            var lengthOfSideB:Number = Math.sin(angleBInRadians) * lengthOfSideC / Math.sin(angleCInRadians);

            var g:Graphics = this.graphics;
            g.clear();
            g.lineStyle(1.5, 0xFF0000, 1, true);
            g.moveTo(startX, startY);

            var bSideEndX:Number = (lengthOfSideB * Math.cos(angleBInRadians))+ startX;
            var bSideEndY:Number = (lengthOfSideB * Math.sin(angleBInRadians))+ startY;
            g.lineTo(bSideEndX, bSideEndY);

            g.lineStyle(1.5, 0x0000FF);
            var cSideEndX:Number = -(lengthOfSideC * Math.cos(angleCInRadians)) + startX;
            var cSideEndY:Number = (lengthOfSideC * Math.sin(angleCInRadians)) + startY;
            g.lineTo(cSideEndX, cSideEndY);

            g.lineStyle(1.5, 0);
            g.lineTo(startX, startY);
        }

        private function angleInRaidans(degrees:Number):Number
        {
            return degrees * Math.PI / 180;
        }
    }
}
于 2013-02-23T21:54:55.997 に答える