Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Переводы величин (координаты)

Поиск:
Декартовы координаты - в полярные (2D)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Translatintg Decart coordinates to polar coordinates in 2 dimensions
//  (c) Johna Smith, 1996
//
//  Method description:
//
//  r=(x^2+y^2)^(1/2)
//  phi=+/- arccos(x/r)
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

struct decart
{
  float x;
  float y;
};

struct polar
{
  float r;
  float phi;
};

polar Decart2Polar(decart c)
{
  polar p;

  p.r=sqrt(c.x*c.x+c.y*c.y);
  p.phi=acos(c.x/p.r)*(c.y>=0?1:-1);

  return p;
}

decart d={1,1};
polar p;

void main(void)
{
  p=Decart2Polar(d);
  printf("(x,y)=(%f,%f) -> (r,phi)=(%f,%f)n",d.x,d.y,p.r,p.phi);
}




Полярные - в декартовы

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Translatintg polar coordinates to Decart coordinates in 2 dimensions
//  (c) Johna Smith, 1996
//
//  Method description:
//
//  x=r*cos(phi)
//  y=r*sin(phi)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define Pi 3.1415926536

struct decart
{
  float x;
  float y;
};

struct polar
{
  float r;
  float phi;
};

decart Polar2Decart(polar p)
{
  decart d;

  d.x=p.r*cos(p.phi);
  d.y=p.r*sin(p.phi);

  return d;
}

polar p={1.4142135624,Pi/4};
decart d;

void main(void)
{
  d=Polar2Decart(p);
  printf("(r,phi)=(%f,%f) -> (x,y)=(%f,%f)n",p.r,p.phi,d.x,d.y);
}



Декартовы координаты - в сферические (3D)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Translatintg Decart coordinates to spherical coordinates in 3 dimensions
//  (c) Johna Smith, 1996
//
//  Method description:
//
//  r=(x^2+y^2+z^2)^(1/2)
//  phi=+/- arccos(x/(x*x+y*y)^(1/2))
//  theta=arccos(z/r)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

struct decart
{
  float x;
  float y;
  float z;
};

struct spherical
{
  float r;
  float phi;
  float theta;
};

spherical Decart2Spherical(decart c)
{
  spherical p;

  p.r=sqrt(c.x*c.x+c.y*c.y+c.z*c.z);
  p.phi=acos(c.x/sqrt(c.x*c.x+c.y*c.y))*(c.y>=0?1:-1);
  p.theta=acos(c.z/p.r);

  return p;
}

decart d={1,1,1};
spherical p;

void main(void)
{
  p=Decart2Spherical(d);
  printf("(x,y,z)=(%f,%f,%f) -> (r,phi,theta)=(%f,%f,%f)n",
         d.x,d.y,d.z,p.r,p.phi,p.theta);
}




Сферические - в декартовы

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Translatintg spherical coordinates to Decart coordinates in 3 dimensions
//  (c) Johna Smith, 1996
//
//  Method description:
//
//  x=r*cos(phi)*sin(theta)
//  y=r*sin(phi)*sin(theta)
//  z=r*cos(theta)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define Pi 3.1415926536

struct decart
{
  float x;
  float y;
  float z;
};

struct spherical
{
  float r;
  float phi;
  float theta;
};

decart Spherical2Decart(spherical p)
{
  decart d;

  d.x=p.r*cos(p.phi)*sin(p.theta);
  d.y=p.r*sin(p.phi)*sin(p.theta);
  d.z=p.r*cos(p.theta);

  return d;
}

spherical p={1.732051,0.785398,0.955317};
decart d;

void main(void)
{
  d=Spherical2Decart(p);
  printf("(r,phi,theta)=(%f,%f,%f) -> (x,y,z)=(%f,%f,%f)n",
         p.r,p.phi,p.theta,d.x,d.y,d.z);
}
Сайт: forum.vingrad.ru






Просмотров: 2602

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную