|
|
|
| задана окружность,
x = R*cos(t)
y = R*sin(t)
центр и радиус вводит пользователь, и дана точка которую тоже вводит пользователь, и если эта точка принадлежит окружности, то вычислить длину вектора L=sqrt((x-x0)в2-(y-y0)в2-Rв2), а если не принадлежит вывести на дисплей ошибку
double t,pi;
pi=2*3.1415926535;
for(t=0; t<pi; t+=0.001)
{
if ( (m_x = m_x0 + m_r*cos(t)) && (m_y = m_y0 + m_r*sin(t)) )
{
MessageBox("Принадлежит","result",MB_OK);
break;
}
else continue;
}
|
помогите решить... | |
|
|
|
|
|
|
|
для: ZC
(29.06.2008 в 14:23)
| | sqrt((x-x0)в2-(y-y0)в2-Rв2) |
Что такое в? | |
|
|
|
|
|
|
|
для: ZC
(29.06.2008 в 14:23)
| |
/* Квадрат числа */
#define sqr(num) ((num)*(num))
/* Центр и радиус */
int cx, cy, r;
/* Заданная точка */
int mx, my;
/* Вычисления */
int hb = r * sin(my);
int vb = r * cos(mx);
/* Выходит за радиус */
if (
(mx>cx && mx>r) ||
(mx<cx && mx<r) ||
(my>cy && my>r) ||
(my<cy && my<r)
) printf("Out of radius");
/* Выходит за пределы */
else if (
(mx>cx && mx>hb) ||
(mx<cx && mx<hb) ||
(my>cy && my>vb) ||
(my<cy && my<vb)
) printf("Out of border");
/* Считаем вектор */
else
{
int v = sqrt(sqr(hb-mx) - sqr(vb-my) - sqr(r));
printf("Vector size: %d", v);
}
|
| |
|
|
|
|
автор: Trianon. (04.07.2008 в 21:08) |
|
|
для: ZC
(29.06.2008 в 14:23)
| | Если точка принадлежит окружности, то длина вектора из центра в точку равна радиусу по определению.
Если речь о том, принадлежит ли точка кругу, то проще сравнить длину вектора с радиусом безо всяких циклов. | |
|
|
|
|
|
|
|
для: Trianon.
(04.07.2008 в 21:08)
| | Ну да, я как обычно ищу сложные пути :) | |
|
|
|