当前位置: 代码迷 >> 综合 >> javaFx--绘制正多边形
  详细解决方案

javaFx--绘制正多边形

热度:36   发布时间:2023-12-03 08:42:56.0

题目:

编程实现绘制正N边形,且可以指定正N边形的边数,边长,中心坐标

  • RegularPolygon.java:
public class RegularPolygon {
    private int CenterX;private int CenterY;private int NumVerge;private double LenVerge;public int getCenterX() {return CenterX;}public void setCenterX(int centerX) {this.CenterX = centerX;}public int getCenterY() {return CenterY;}public void setCenterY(int centerY) {this.CenterY = centerY;}public int getNumVerge() {return NumVerge;}public void setNumVerge(int numVerge) {this.NumVerge = numVerge;}public double getLenVerge() {return LenVerge;}public void setLenVerge(int lenVerge) {this.LenVerge = lenVerge;}/*** 正N边形的面积计算公式:S=0.5sin(2π/N)NR^2* 其中R为外接圆半径,若边长为L* 则sin(π/N)=L/2R* 经过推导得S=NL^2cot(π/N)/4*/public double getArea() {
   //计算面积return this.NumVerge*Math.pow(LenVerge, 2)*Math.atan(Math.PI/(double)this.NumVerge)/4;}public double getPerimeter() {
   //计算周长return this.LenVerge*this.NumVerge;}}
  • Main.java:
import java.util.Scanner;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;public class Main extends Application{public static RegularPolygon input() {System.out.println("请输入正n边形边数和边长:");Scanner input=new Scanner(System.in);int n=input.nextInt();int len=input.nextInt();System.out.println("请输入正n边形中心坐标:");int centerx=input.nextInt();int centery=input.nextInt();RegularPolygon g=new RegularPolygon();g.setCenterX(centerx);g.setCenterY(centery);g.setLenVerge(len);g.setNumVerge(n);System.out.println("面积:"+g.getArea());System.out.println("周长:"+g.getPerimeter());return g;}@Overridepublic void start(Stage primaryStage)  {RegularPolygon g=input();Pane pane=new Pane();Polygon polygon=new Polygon();pane.getChildren().add(polygon);polygon.setFill(Color.PINK);ObservableList<Double> list= polygon.getPoints();double centerX=g.getCenterX(),centerY=g.getCenterY();double R=0.5*g.getLenVerge()/Math.sin(Math.PI/g.getNumVerge());for(int i=0;i<g.getNumVerge();i++) {
    list.add(centerX+R*Math.cos(Math.PI/2+i*2*Math.PI/g.getNumVerge()));list.add(centerY+R*Math.sin(Math.PI/2+i*2*Math.PI/g.getNumVerge()));}Scene scene=new Scene(pane,600,600);primaryStage.setTitle("正n边形");primaryStage.setScene(scene);primaryStage.show();}public static void main(String [] args) {Application.launch(args);}
}

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  相关解决方案