Autor Tema: Construccion Software  (Leído 4695 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado chips

  • PIC10
  • *
  • Mensajes: 4
Construccion Software
« en: 11 de Enero de 2008, 18:14:38 »
Hola gente!!

Estoy diseñando el software para una maquina CNC  :-/. El problema que tengo es en base a matematicas, espero no haberme equivocado de foro  :?

Tengo este codigo en G-Code:

%FSLAX43Y43*%
%MOIN*%
%ASAXBY*%
%SFA1.000000B1.000000*%
%IPPOS*%

%ADD10C,1.000000*%
G54D10*
X934Y1128D02*
Y7806D01*
X5761D01*
Y7020D01*
X1816D01*
Y4976D01*
X5508D01*
Y4190D01*
X1816D01*
Y1914D01*
X5918D01*
Y1128D01*
X934D01*
%M02*%

Lo que forma este codigo es la letra "E", pero no me sale el contorno de la letra, por el metodo que estoy realizando es sacando la pendiente (m=(x1-x2)/(y1-y2)) y su angulo que es la Contangente o tangente inversa. Pero tengo muchos problemas al momento de sacar los valores, que unos si me dan pero en otros me da un angulo inverso, cosa que no deberia pasar.
Espero haberme explicado y que me puedan ayudar.

Saludos!!

Bytes!!

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Construccion Software
« Respuesta #1 en: 11 de Enero de 2008, 18:17:52 »
La operación matemática para obtener el ángulo, no es la cotangente, si no el arco tangente. Esto puede crear confusión ya que se suele expresar el arco tangente como tg^-1, pero no es la contangente.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado chips

  • PIC10
  • *
  • Mensajes: 4
Re: Construccion Software
« Respuesta #2 en: 11 de Enero de 2008, 18:27:50 »
Ok, ok, me equivoque, es correcto, pero de todos modos estoy utilizando el Arcotangente y no me sale, estoy programando en VB y la formula es esta: Arccotan(X) = Atn(X) + 2 * Atn(1).

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Construccion Software
« Respuesta #3 en: 11 de Enero de 2008, 19:51:36 »
¿Qué función es "Atn"?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Construccion Software
« Respuesta #4 en: 12 de Enero de 2008, 05:15:20 »
Al ver tu post me quedé un poco perplejo. Al igual que tú pensé, ¿para qué definir una función arcotangente utilizando una función arcotangente?  :D

He estado leyendo y son muchos los sitios donde aparece la fórmula que ha aplicado chips. Creo que el tema viene porque la función atn devuelve como resultado los grados, pero no el cuadrante en el que se encuentran, por lo que siempre da un valor entre 0 y 1.
Con el ajuste que él hace, parece que ya sale correctamente.

Desconectado chips

  • PIC10
  • *
  • Mensajes: 4
Re: Construccion Software
« Respuesta #5 en: 15 de Enero de 2008, 18:15:35 »
En la ayuda MSDN dice que:

Atn (Función): Devuelve un tipo Double que especifica el arcotangente de un número.

Comentarios
La función Atn toma la razón de dos lados de un triángulo rectángulo (número) y devuelve el ángulo correspondiente en radianes. La razón es la longitud del lado opuesto al ángulo dividida por la longitud del lado adyacente al ángulo.

Ya sacando el valor devuelto en grados, se le tiene que sumar 180, pero no funciona para todos los casos.
Y ese es el problema.  :(

Espero me puedan ayudar.

Saludos!!

Bytes!!

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Construccion Software
« Respuesta #6 en: 15 de Enero de 2008, 21:35:46 »
Este tipo de funciones suele operar solo en el primer cuadrante, solo es capaz de calcular valores entre 0 y 90 grados. El resto de cuadrantes se calcula sumando a los valores del primer cuadrante: 90º para el segundo cuadrante, 180º para el tercero y 270º para el cuarto cuadrante. ¿Como sabemos en que cuadrante estamos?
pues por el signo de los lados que forman el triángulo: si los dos son positivos estamos en el primer cuadrante, si el lado contiguo es positivo y el opuesto negativo estamos en el segundo cuadrante, si los dos son negativos estamos en el tercer cuadrante y por ultimo si el lado opuesto es negativo y el contiguo positivo estamos en el cuarto cuadrante. El ángulo se calcula con los dos lados positivos y se traslada el cuadrante que corresponda como se ha dicho antes.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado diego_z

  • PIC16
  • ***
  • Mensajes: 225
Re: Construccion Software
« Respuesta #7 en: 07 de Febrero de 2008, 21:49:15 »
hola soy nuevo en el foro y viendo como esta el amigo arriba desarrollando su programa le comento que estoy haciendo practicamente lo mismo pero para imprimir c.i y estoy desarrollando uno pero sin todos los calculos que el realiza, solo leo un archivo plano y luego lo envio a los pics a traves del pp si te sirve de algo lo puedo orientar saludos diego



muy bueno el foro
,,,,option,,,,,,,,,,,explicit,,,,,,,

DR800 big a la venta ,solo argentina por privado

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Construccion Software
« Respuesta #8 en: 07 de Febrero de 2008, 22:17:56 »
En la ayuda MSDN dice que:

Atn (Función): Devuelve un tipo Double que especifica el arcotangente de un número.

Comentarios
La función Atn toma la razón de dos lados de un triángulo rectángulo (número) y devuelve el ángulo correspondiente en radianes. La razón es la longitud del lado opuesto al ángulo dividida por la longitud del lado adyacente al ángulo.

Ya sacando el valor devuelto en grados, se le tiene que sumar 180, pero no funciona para todos los casos.
Y ese es el problema.  :(

Espero me puedan ayudar.

Saludos!!

Bytes!!

Bueno, el problema es que cuando sometemos un ángulo a una función trigonométrica como la tangente se produce una pérdida de información.

Ejemplo:
Supongamos que tengo un ángulo de 45 grados. Todos sabemos que la tangente de dicho ángulo es 1.
Si ahora tomo un ángulo de 225 grados, su tangente también dará 1.
Esto nos lleva a pensar que la función tangente es sobreyectiva...

Entonces, cuando somentemos un ángulo a la tangente( o bien, trabajamos con un valor relacionado a su tangente) hemos perdido parte de la información que poseíamos.
Formalmente, cuando realizamos una arcotangente sobre un valor, debemos tener en cuenta que el resultado será un ángulo + C, donde C puede valer 0 o PI.
Para recuperar la información perdida debés hacer como te explicó jfh900 y guiarte por los lados involucrados.

Saludos!

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Construccion Software
« Respuesta #9 en: 14 de Febrero de 2008, 21:51:59 »
Genial la explicación Bruno para un problema que si bien es simple siempre aparece cuando nos abstraemos de la geometría y nos remitimos solo a la aritmética.

El problema se soluciona con una sentencia condicional que evalue el sentido de ambos desplazamientos (x e y) y con ello decida si se deben sumar o no los 180º

Siendo la pendiente ∆y/∆x (y aclaro esto, pues en el primer post está al revés)

se debe sumar 180º Si:
ambos ∆ son negativos se suma 180 (para llevar el dato del 1er cuadrante al 3ro)
∆x es negativo                             (para llevar el dato del 4to cuadrante al 2do)

Un saludo para todos
     

Desconectado electrotacto

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 560
Re: Construccion Software
« Respuesta #10 en: 10 de Marzo de 2008, 01:06:45 »
 :shock: :( :shock:
No es lo mismo un metro de encage negro a que un negro te encage un metro