私はフラグを描く予定のプログラムのために星を作ろうとしています。私はかなりJava Appletクラスに限られています。プロセスは異なる中心の星ごとに同じでなければならないので、XとYの値を持つメソッドに中心を渡し、中心からの角度に基づいてPolygonを使って描画します。問題は、出てくる形が決して星ではないことです。正弦波と余弦を使って星を作りようとしています
public void paint(Graphics g)
{
super.paint(g);
Polygon star= new Polygon();
int radius=20;
int roundX=(int)Math.round(radius*Math.cos(Math.toRadians(54)));
int roundY=(int)Math.round(radius*Math.sin(Math.toRadians(54)));
int originX=100,originY=100;
//int radius=20;
int topY=originY+radius;
int bottomLeftX=originX+roundX;
int bottomY=originY-roundY;
int middleY=originY+(int)Math.round(radius*Math.sin(Math.toRadians(18)));;
int midRightX=originX+(int)Math.round(radius*Math.cos(Math.toRadians(18)));;
int midLeftX=originX-(int)Math.round(radius*Math.cos(Math.toRadians(18)));
int bottomRightX=originX+roundX;
int bottomRightY=middleY-roundY;
star.addPoint(originX, originY);
star.addPoint(originX, topY);
star.addPoint(bottomLeftX, bottomY);
star.addPoint(midRightX, middleY);
//star.addPoint(midLeftX, middleY);
//star.addPoint(bottomRightX, bottomY);
//star.addPoint(originX, topY);
g.drawPolygon(star);
}
ので左下の点はx軸から中心から234度または54度であるべきです。これらのいずれかをコード化して操作(+またはマイナス)を変更すると、それは意図したものとは反対の方向に発射するようです。中点は中心から18度上になるはずですが、外見上はx軸にほぼ沿って見えます。私は星に近づくためにそれを微調整することができるかどうかを確認するためにポイントを1つずつ無効にしていましたが、これで私は目隠しして酔っ払いながら彫刻に相当することを認識しました。
あなたが何が間違っているのか理解してもらえれば、大変感謝しています。
あなたが期待している/希望しているイメージの種類の小さなスケッチが役立つかもしれませんが、いくつか追加してもよろしいですか? –
* "私はJava Appletクラスにかなり制限されています。" * 1)なぜアプレットをコーディングするのですか?教師がそれを指定している場合は、[CS教師が** Javaアプレットを教えるのを止めるべき理由](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-java-applets /)を使用します。 2)[Java Plugin support deprecated](http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/)および[Plugin-Free Webへの移動]も参照してください。 (https://blogs.oracle.com/java-platform-group/moving-to-a-plugin-free-web)。 –