Esse é a primeira publicação que faço referente a educação. Apresento um código em java que realiza o cálculo da distância entre dois pontos, no caso, os pontos que formariam a hipotenusa de um triângulo retângulo isósceles de lados 1,1,hipotenusa(hip). Se fizéssemos esse procedimento com uma régua escolar teríamos um valor muito impreciso de 1,4 cm e nossos olhos perceberiam um pouco mais, para melhorarmos nossa precisão, podemos fazer um triângulo proporcionalmente maior. Se fizemos 10x, isto é, lados 10,10,10*hip teríamos a resposta de 10* maior, no entanto, nossa régua agora dá o valor de 14,1cm e mais uma vez nossos olhos nos deixam em dúvida. Se fizessemos 100x maior podemos supor que o valor seria 141,4cm. Tente fazer isso você mesmo. Existe uma afirmação que diz que se fizéssemos o cálculo perfeitamente preciso teríamos o valor da hipotenusa equivalente ao valor da raiz quadrada de 2(1,4142135623730950...), perceba que a ideia inicial que tive de medir com a régua estava nos dando valores cada vez mais precisos. Tive a ideia de fazer um programa em java que utilizasse de métodos para desenhar retas e pontos. Fiz o triângulo de lados 1,1,hipotenusa e o cálculo tem ótima precisa de 1.4142135623730951 com erro apenas no último dígito (1) que se compararmos com o cálculo feito por outros métodos mais precisos continuaria com ...0488016887242097... assim sendo o programa também tem suas limitações porém vamos assumir que para essa aproximação temos o valor de dois já que esse mesmo valor ao quadrado é aproximadamente 2,0000000000000001. Mas recentemente descobri que se montássemos um triângulo de lados 1, raiz quadrada de 2, hipotenusa, teríamos o valor impressionante da raiz quadrada de 3 como mostra a figura do link (http://www.geom.uiuc.edu/~demo5337/Group3/spiral.gif). Na figura, um dos lados de todos os outros triângulos não tem valor escrito, mas ele é igual a 1, ou seja, lados 1, 1, a para o primeiro tri. Para o segundo lados 1, a, b (note que a = raiz de 2 e b = raiz de 3) e por ai vai sucessivamente. O código abaixo irá mostrar meu algoritmo. Se desejar rodar o código basta copiá-lo para uma IDE de java (Netbeans ou Eclipse por ex.). Mas algumas saídas já adianto: Programei para nunca parar, pelo menos até aonde o programa não estourar memória. A primeira parte encerro por aqui, parte 2 incluirá a parte gráfica.

raiz de 1 1.0
raiz de 2 1.4142135623730951
raiz de 3 1.7320508075688774
raiz de 4 2.0
raiz de 5 2.23606797749979
raiz de 6 2.4494897427831783
raiz de 7 2.6457513110645907
raiz de 8 2.8284271247461903
raiz de 9 3.0000000000000004
raiz de 10 3.16227766016838
<?java
import java.awt.*;
import java.applet.*;
import java.awt.geom.*;
public class Line2D1 extends Applet {
private Line2D Shape1;
private Line2D Shape2;
private Line2D Shape3;
private Line2D iShape;
//double diagonal;
private Point2D Point1;
private Point2D iPoint;
double raizquadrada;
boolean continua = true;
public static void main(String[] args) {
Line2D1 mede = new Line2D1();
mede.raiziterativa();
}
public void raiziterativa() {
boolean continua = true;
while (continua == true) {
iPoint = new Point2D.Double(0, raizquadrada);
raizquadrada = iPoint.distance(Shape1.getP2());
iShape = new Line2D.Double(Shape1.getP1(), iPoint);
long i;
i = Math.round(Math.pow(raizquadrada, 2)) ;
System.out.println("raiz de " + i + " " + raizquadrada);
}
}
public Line2D1() {
Shape1 = new Line2D.Double(0, 0, 1, 0); // linha vertical vetor da esqPdir
//Shape2 = new Line2D.Double();
//Shape2.setLine(0.F, 0.F, 0.F, 1.F); // linha horizontal vetor de cimaPbaixo cpb
//Shape3 = new Line2D.Double(120, 0, 20, 100); // diagonal cpb dpe.
Point1 = new Point2D.Double(0, 1);
Shape2 = new Line2D.Double(Shape1.getP1(), Point1);
Shape3 = new Line2D.Double(Shape1.getP2(), Point1);
}
@Override
public void paint(Graphics g) {
Graphics2D g2D;
boolean Hit;
g2D = (Graphics2D) g;
Hit = Shape1.intersectsLine(Shape2);
g2D.drawString("intersects = " + Hit, 20, 145);
g2D.draw(Shape1);
g2D.draw(Shape2);
g2D.draw(Shape3);
}
}