>

유틸리티 벡터로 다각형을 그려야하는 Android Studio를 사용하여 Java로 프로젝트를 수행하고 있습니다. 사용자가 다각형에 원하는 변 수를 삽입 한 다음 변이있는 입력에 숫자로 다각형을 그립니다. Java를 계속 시작하고 있기 때문에 누군가 나를 도울 수 있다면 매우 기쁩니다.
이것은 내 파일 Poligono.java입니다 :

import java.util.Vector;
public class Poligono extends Reta{
    Vector<Ponto2D> pontos_poligono;
    static int verifica_pontos=0;

    public Poligono(Vector<Ponto2D> p5){
        this.pontos_poligono=p5;
        verifica_pontos=p5.size(); //Numero total de pontos no Vector (exemplo no array number=0 number=1 -> o size é 2)
    }
    public Double PerimetroPoligono(){
        double perimetro=0;

        for (int i=0; i < verifica_pontos ;i++){
            Ponto2D pinicial = pontos_poligono.get(i);
            Ponto2D pfinal = pontos_poligono.get(i+1);
            perimetro+=pinicial.dist(pfinal);
        }
        return perimetro;
    }
}

이것은 Ponto2D.java입니다 :

public class Ponto2D {
    int x, y;
    public Ponto2D() {
        this.x = 0;
        this.y = 0;
    }
    public Ponto2D(int a, int b) {
        x = a;
        y = b;
    }
}

그리고 Reta.java :

public class Reta {
    Ponto2D pinicial;
    Ponto2D pfinal;
    public Reta(){
        pinicial = new Ponto2D();
        pfinal = new Ponto2D();
    }

    public Reta(Ponto2D a, Ponto2D b){
        pinicial = a;
        pfinal = b;
    }
}

  • 답변 # 1

    게시물이 100 % 명확하지 않습니다. 우선, 벡터를 사용하여 다각형을 "그릴"수 없습니다 (데이터를 저장하는 방법입니다). 그래픽 라이브러리를 사용하고, 창을 만들고, 캔버스를 만드는 등의 작업을 수행해야합니다. 대신 다각형을 개념적으로 나타내려면 여기에 제 의견이 있습니다. regolar 다각형을 원한다고 가정하면 sin ad cos를 사용하여 정점 위치를 계산할 수 있습니다 (이것 참조). 모든 다각형 정점을 저장하는 Vector를 만들 수 있습니다. Ponto2D를 확장하여 x와 y에 중심 좌표를 저장할 수 있습니다.

    import java.util.Vector;
    public class Poligono extends Ponto2D{
        private Vector<Ponto2D> vertices;
        private int num_vertices
        public Poligono(int num_vertices){
            super(); //If you use a center != (0,0) you have 
            //to add the center coordinates to all the vertices
            //You also should add a radius (distance from
            //the center to all vertices);
            this.num_vertices=num_vertices;
            this.radius=radius;
            vertices=new Vector<>();
            fillVector();
        }
    
        //This method calculate all the vertices position and
        //store it in the Vector
        private void fillVector(){
            for(int i=0; i<num_vertices;i++){
                //use sin and cos to calculate vertices
                for (int i = 0; i < sides; ++i) {
                    x = (int) (Math.cos(theta * i));
                    y = (int) (Math.sin(theta * i));
                    vertices.add(new Ponto2D(x,y));
                }
            }
        } 
    
        public Double PerimetroPoligono(){
            //take every point of the vector, and add the distances between them.
        }
    }
    
    

  • 이전 java - 응용 프로그램에서 더 많은 내용을 표시하려면 화살표를 클릭하십시오
  • 다음 macos - NSAttributedString size () 메서드가 잘못된 너비를 반환합니다