Witam!
Coby nie śmiecić na forum edytuję i proszę o kolejne porady. Niby program działa i liczy azymut ale liczy poprawnie tylko gdy współrzędne są w I ćwiartce czwartaka. W geodezji używamy ukladu prawoskrętnego dlatego tez zamieniłem współrzędne na początku. Zapewne źle jest coś z if'ami ale nie wiem co.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x1,y1,x2,y2,x,y,A12,A13,alfa,d12,d13,dx2,dy2,dx,dy,A12st,A13st,alfast;
float PI=(3.14159265);
int i = 3;
/*Wpisywanie wspolrzednych*/
printf("Podaj wspolrzedne x1, y1, x2, y2:\n");
scanf ("%f", &x1);
scanf ("%f", &y1);
scanf ("%f", &x2);
scanf ("%f", &y2);
/*Zamiana miejscami wspolrzednych*/
/*float ex1 = x1, ex2 = x2;
x1=y1;
y1=ex1;
x2=y2;
y2=ex2;
float ex = x;
x=y;
y=ex;*/
while(1)
{
printf("Podaj wspolrzedne pkt %d\n", i);
scanf ("%f", &x);
scanf ("%f", &y);
i++;
/*Przyrosty*/
dx2=x2-x1;
dy2=y2-y1;
dx=x-x1;
dy=y-y1;
/*Azymut 12*/
if ((dx2==0) & (dy2>0)) A12=PI/2; /*Warunki na azymuty pelne*/
else A12=atan2(dy2,dx2);
if ((dx2>0) & (dy2==0)) A12=0;
else A12==atan2(dy2,dx2);
if ((dx2==0) & (dy2<0)) A12=PI+PI/2;
else A12==atan2(dy2,dx2);
if ((dx2<0) & (dy2==0)) A12=PI;
else A12==atan2(dy2,dx2);
/*if ((dx2<0) & (dy2>0)) A12=A12+PI/2; Warunki na azymuty +180 itd
else A12=atan(dy2/dx2);*/
if ((dx2<0) & (dy2<0)) A12=atan2(dy2,dx2)+PI+PI;
else A12=atan2(dy2,dx2);
/*if ((dx2>0) & (dy2<0)) A12=A12+2*PI;
else A12=atan(dy2/dx2);*/
/*Azymut 13*/
if ((dx==0) & (dy>0)) A13=PI/2; /*Warunki na azymuty pelne*/
else A13=atan2(dy,dx);
if ((dx>0) & (dy==0)) A13=0;
else A13==atan2(dy,dx);
if ((dx==0) & (dy<0)) A13=PI+PI/2;
else A13==atan2(dy,dx);
if ((dx<0) & (dy==0)) A13=PI;
else A13=atan2(dy,dx);
/*if ((dx<0) & (dy>0)) A13=A13+PI/2; Warunki na azymuty +180 itd
else A13=atan(dy/dx);*/
if ((dx<0) & (dy<0)) A13=atan2(dy,dx)+PI+PI;
else A13=atan2(dy,dx);
/*if ((dx>0) & (dy<0)) A13=A13+2*PI;
else A13=atan(dy/dx);*/
A12st=A12*180/PI;
A13st=A13*180/PI;
/*if (A12st>360) A12st=A12st-360;
else A12st=A12*180/PI;
if (A13st>360) A13st=A13st-360;
else A13st=A13*180/PI;*/
/*Kat*/
alfa=A13-A12;
if (alfa<0) alfa=A12-A13;
else alfa=A13-A12;
alfast=alfa*180/PI;
/*Dlugosci*/
d12=sqrt(dx2*dx2+dy2*dy2);
d13=sqrt(dx*dx+dy*dy);
/*Wyniki*/
printf("Wyniki: \n");
printf("Kat = %f\n", alfast);
printf("Odleglosc 12= %f\n", d12);
printf("Odleglosc 13= %f\n", d13);
printf("Azymut 12= %f\n", A12st);
printf("Azymut 13= %f\n", A13st);
}
return 0;
}