Mar May 15, 2007 8:57 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
| Distancia entre coordenadas... |
|
|
Supongamos que tengo un plano en donde se pueden seleccionar coordenadas del tipo X e Y, como ser x=100 y=50
Como podría calcular la distancia entre 2 coordenadas ?
Hay algún módulo que lo calcule y yo pueda definir que es una coordenada...O tengo que hacerlo manualmente calculando la suma de los cuadrados y eso...
Saludos |
|
|
|
Mar May 15, 2007 2:08 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
|
|
|
|
|
Hmmm, entre dos puntos simples:
Hay otra forma más fácil pero no la recuerdo  |
|
Mar May 15, 2007 4:26 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
| ¿Pero son puntos geográficos o cartesianos? |
|
Mie May 16, 2007 7:36 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
cartesianos, hasta ahora la única que conozco es la miasma que puso creating, la de la suma de cuadrados...
Quiero ver si hay algo ya hecho que me facilite un poco la vida jeje estoy investigando para no codificar luego de más...
Saludos |
|

Mie May 16, 2007 8:54 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
Se podría hacer algo con trigonometría, pero casi te daría lo mismo en coste de cálculo.
Si el contexto donde te mueves es pequeño (es más o menos reducido la distancia máxima) podrías calcular las distancias precalculando los cuadrados de la suma de diferencias, y de esa manera te ahorras un sqrt(). Incluso yo he visto para videojuegos precalcular distancias basadas en la diferencia de coordenadas en las dos dimensiones.
En módulos, tienes unos cuántos que te realizan esta tarea. Por ejemplo, Cad::Calc tienes la función dist2d() para el cálculo de esta distancia. Según el código, es la de siempre: raíz de la suma de cuadrados de las diferencias. |
|

Mie May 16, 2007 4:11 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
|
|
|
|
|
¿Los números son muy grandes?
Si no es así no es tan dificil de programar...
| Perl: |
sub ditancias {
my ($a, $b, $c, $d) = @_;
my $resultado = (( (($a- $c)** 2) + (($b- $d)** 2)) ** (1/ 2) );
return $resultado;
}
|
| Cita: | | Quiero ver si hay algo ya hecho que me facilite un poco la vida jeje estoy investigando para no codificar luego de más... |
Aunque viendo lo que explorer pone... ya está hecho  |
|
Jue May 17, 2007 10:54 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
Jue May 17, 2007 4:28 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
| Ya me he dado cuenta... parece ser que el motor de búsqueda en CPAN ha cambiado... |
|
Vie May 18, 2007 4:58 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
|
|
|
|
|
| Pues no... parece que es una limitación de CPAN. Con otros módulos sí que funciona el método de llamarlos con perldoc?. Cosa curiosa... |
|
Lun May 21, 2007 1:03 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
|
|
|
|
|
Duda de funcionalidad...
¿Qué es mejor, usar sqrt(número) o número elevado a la 1/2?
Los resultados son los mismos, pero... ¿Realmente hay alguna diferencia? |
|
Sab May 26, 2007 7:57 am
|
 |
eliben
Perlero Nuevo

|
Registrado: 13 May 2007
Mensajes: 4
Ubicación: Israel
|
|
|
|
|
Es muy sencillo activar un pequeño Benchmark:
| Perl: | use strict;
use warnings;
use Benchmark ":all";
$|++;
my @arr = (5, 4, 3. 14151926, 999786, 5.178591e37, 14e- 33);
cmpthese (1000000, {
'sqrt' => sub {my $s = 0; $s += sqrt($_) foreach(@arr); },
'**1/2 ' => sub {my $s = 0; $s += $_ ** 0. 5 foreach(@arr); }
}); |
Resultados:
| Código: |
Rate **1/2 sqrt
**1/2 140964/s -- -15%
sqrt 165344/s 17% -- |
|
|
Sab May 26, 2007 9:19 am
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
|
|
|
|
|
Bueno, ya que lo dices...
Rsultados (Linux 2.6.17-11-generic, AMD 32-bit)
| Código: |
Rate **1/2 sqrt
**1/2 117647/s -- -24%
sqrt 155763/s 32% -- |
Que raro que sqrt sea mas lento. |
|
Dom May 27, 2007 12:21 pm
|
 |
eliben
Perlero Nuevo

|
Registrado: 13 May 2007
Mensajes: 4
Ubicación: Israel
|
|
|
|
|
sqrt es mas rápido  |
|
Powered by phpBB © 2001, 2005 phpBB Group
|