用数学吧:
先选一条边确定两点座标(A,B、此边为c)根据a的长度,可以画出C的轨迹(是以B为圆心,a为半径的圆)连接AC,计算长度,若为b,则此C点为所求。
笨是笨了点,但应该正确,right?

解决方案 »

  1.   

    //the following is the implementation i just did.
    import java.awt.*;
    import javax.swing.*;
    import java.io.*;class test extends JFrame
    {
    static int[] trigle=new int[3];
    static final int ORINGE=150,JINDU=10000;

    public void paint(Graphics g)
    {
    if(judge(trigle)==true)
    {
    drawTrigle(g,trigle);
    }
    }

    public void drawTrigle(Graphics g,int[] t)
    {//draw a trigular in terms of the length of the trigular
    g.drawLine(ORINGE,ORINGE,ORINGE+t[0],ORINGE);//draw AB;
    double dots[][]=new double[JINDU][2];
    for(int i=0;i<JINDU;i++)
    {
    dots[i][0]=ORINGE+t[1]*Math.cos(Math.PI*i/JINDU);
    dots[i][1]=ORINGE-t[1]*Math.sin(Math.PI*i/JINDU);
    }
    int dot[]=new int[2];
    double min=JINDU;
    for(int i=0;i<JINDU-1;i++)
    {
    double a=Math.abs((ORINGE+t[0]-dots[i][0])*(ORINGE+t[0]-dots[i][0])+
    (ORINGE-dots[i][1])*(ORINGE-dots[i][1])-t[2]*t[2]);
    if(a<min)
    {
    min=a;
    dot[0]=(int)dots[i][0];
    dot[1]=(int)dots[i][1];
    }
    }
    g.drawLine(ORINGE+t[0],ORINGE,dot[0],dot[1]);//draw BC
    g.drawLine(ORINGE,ORINGE,dot[0],dot[1]);//draw AC

    } boolean judge(int[] t)
    {//judge whether the length surplied can form an trigular.
    for(int i=0;i<3;i++)
    {
    int a=i,b=a+1>2? 0:a+1,c=b+1>2? 0:b+1;
    if(t[a]+t[b]<t[c]||t[a]-t[b]>t[c])return false;
    }
    return true;
    }
    public static void main(String[] args)throws Exception
    {
    trigle[0]=30*3;
    trigle[1]=40*3;
    trigle[2]=50*3;
    new test();
    }

    test()
    {
    this.setSize(400,400);
    this.setVisible(true);
    }
    }