[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 20480 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1367224204146.jpg -(175480 B, 1995x1327) Thumbnail displayed, click image for full size.
175480 No.91851  

Рубрика глупых вопросов, наследница рубрики с похожим названием получает воплощение в этом треде.
А вопрос у нас сегодня будет конкретнее, чем обычно, хотя и не лишённый неоднозначности и недосказанности.
И так, условие задачи. Есть сфера, в ней каким-то образом разбросаны точки. Мы выделяем некоторую область сферы, задавая минимальные и максимальные значения всех трёх сферических координат, радиуса, склонения и прямого восхождения. Мы говорим о том, что эта область будет интересующим нас выделенным объёмом и отбираем точки которые в него попадают.
Теперь самое главное. Мы хотим научиться находить число точек в цилиндрах описанных около точек выборки, предельно больших, но не выходящих за границы рассматриваемого объёма и ориентированных определённым образом относительно центра оригинальной сферы.
Цилиндры у нас немного хитрые. Они будут прямые круговые, но образующая и радиус основания будут линейно связаны. Т.е. мы устанавливаем некоторую сетку значений радиуса основания r=r1:r2, и тогда образующая h для каждого r находится из линейного соотношения h=\alpha r, где \alpha -- произвольный параметр.
Суть задачи состоит в том, чтобы для каждой точки найти максимальное значение r[i], при котором цилиндр с центром в этой точке и ориентированный под углом \beta к радиусу изначальной сферы, проходящей через эту точку, не выходил бы за границы рассматриваемого объёма. Ну и нужно уметь считать число точек, которые попадают в этот цилиндр.
По сути всё.
Пояснение: про ориентацию цилиндров, прежде всего, задачу необходимо решить для случая \beta = 0 и 90. При этом автор задачи понимает, что при \beta != 0 существует неоднозначность и просит не заморачиваться и определиться, что центральная ось цилиндра должна оставаться в одной плоскости с радиус вектором рассматриваемой точки.
Вот как-то так.

>> No.91852  
File: 1367226515727.jpg -(61585 B, 640x480) Thumbnail displayed, click image for full size.
61585

>>91851
Для каждой точки находим рдиус цилиндра, при котором он имеет только одну точку пересечения с интересующим объемом @ считаем количество точек внутри него.

>> No.91854  
File: 1367230432706.jpg -(30821 B, 570x415) Thumbnail displayed, click image for full size.
30821

>>91852
Это в известной степени очевидно, интересуют формулы, мой друг.

>> No.91855  
File: 1367231346306.jpg -(165479 B, 840x812) Thumbnail displayed, click image for full size.
165479

>>91854
А они зависят от функций области заданного объема и ориентации цилиндров.

>> No.91856  
File: 1367232065122.jpg -(49517 B, 436x500) Thumbnail displayed, click image for full size.
49517

>>91855
Твои слова, конечно, верны, но пока бесполезны.
Дядь, в условии чётко определено как выделяется объём и как цилиндры ориентированны: границы это три пары величин: предельные значения сферических координат, цилиндры ориентированны как угодно, любой случай интересен.
Для начала можно сделать только для цилиндров сонаправленных с радиус вектором, это самый простой вариант.
Требуются вычисления для хоть какого-нибудь случая, а не общие слова.

>> No.91858  
File: 1367234029730.jpg -(39068 B, 500x500) Thumbnail displayed, click image for full size.
39068

>>91856
Если у тебя область интереса задана как r1..r2, θ1..θ2, φ1..φ2 и цилиндр сонаправлен с вектором r то тут все просто:
цилиндр может соприкачаться с областью интереса только дальней стенкой, следовательно:
sqrt((r_pount+h/2)^2+(r_point+\alpha*h)^2)=r2;
θ1<=θ_point-arcsin(\alpha*h/(r_pount+h/2));
θ_point+arcsin(\alpha*h/(r_pount+h/2))<=θ2;
φ1<=φ_point-arcsin(\alpha*h/(r_pount+h/2));
φ_point+arcsin(\alpha*h/(r_pount+h/2))<=φ2;
И хотябы одно из <= должно быть =

>> No.91860  
File: 1367235209154.jpg -(315488 B, 708x965) Thumbnail displayed, click image for full size.
315488

>>91858
А не, верхней влоскостью тоже может контачить, тогда так:

r1<=r_point-h/2;
sqrt((r_pount-h/2)^2+(\alpha*h)^2)=r2;
θ1<=θ_point-arcsin(\alpha*h/(r_pount-h/2));
θ_point+arcsin(\alpha*h/(r_pount-h/2))<=θ2;
φ1<=φ_point-arcsin(\alpha*h/(r_pount-h/2));
φ_point+arcsin(\alpha*h/(r_pount-h/2))<=φ2;
sqrt((r_pount+h/2)^2+(\alpha*h)^2)=r2;
θ1<=θ_point-arcsin(\alpha*h/(r_pount+h/2));
θ_point+arcsin(\alpha*h/(r_pount+h/2))<=θ2;
φ1<=φ_point-arcsin(\alpha*h/(r_pount+h/2));
φ_point+arcsin(\alpha*h/(r_pount+h/2))<=φ2.

+ несколько быстрофиксов

>> No.91861  
File: 1367235356412.jpg -(563833 B, 1600x1200) Thumbnail displayed, click image for full size.
563833

>>91858
Спасибо.

>цилиндр может соприкасаться с областью интереса только дальней стенкой

нет, он может касаться всех поверхностей. Как ближней так и дальней "стенок" и может выходить за пределы рассматриваемых углов.

>следовательно:

sqrt((r_pount+h/2)^2+(r_point+\alpha*h)^2)=r2;
здесь, мне кажется, по ошибке во вторую скобку затесалось r_point.

>θ1<=θ_point-arcsin(\alpha*h/(r_pount+h/2));
>θ_point+arcsin(\alpha*h/(r_pount+h/2))<=θ2;
>φ1<=φ_point-arcsin(\alpha*h/(r_pount+h/2));
>φ_point+arcsin(\alpha*h/(r_pount+h/2))<=φ2;

почему арксинус?
P.S. Прошу избегать слова "просто".

>> No.91863  
File: 1367236437407.png -(1853640 B, 1000x1209) Thumbnail displayed, click image for full size.
1853640

>>91861
См фикс выше.

> почему арксинус?

Чтобы найти максимальный угол между вектором r_point и самой дальней частью плоскости.

> P.S. Прошу избегать слова "просто".

Это очень простой случай же. Если добавить угол между вектором r_point и осью цилиндра повылазит куча матанов и частных случаев.

>> No.91864  

>>91863

>>>φ_point+arcsin(\alpha*h/(r_pount+h/2))<=φ2;
>>почему арксинус?
>Чтобы найти максимальный угол между вектором r_point и самой дальней частью плоскости.

Я тебя не понял.
просто мне кажется, что это отношение катетов и арксинус от этого не самая осмысленная величина.

>Это очень простой случай же.

проблема в том, что даже в этом простом случае легко ошибиться.

>> No.91865  
File: 1367240901076.jpg -(376932 B, 1575x1260) Thumbnail displayed, click image for full size.
376932

>>91864

> просто мне кажется, что это отношение катетов и арксинус от этого не самая осмысленная величина

Точно, вместо (r_pount+h/2) надо sqrt((r_point+h/2)^2+(\alpha*h)^2).

>> No.91866  
File: 1367241326966.jpg -(306144 B, 688x971) Thumbnail displayed, click image for full size.
306144

Либо вместо arcsin arctg.

>> No.91876  
File: 1367297412662.jpg -(22847 B, 350x207) Thumbnail displayed, click image for full size.
22847

>>91855
На этой картинке не хватает иконы у Ивана в руках.

>> No.91879  

>>91876
Ты не смотрел рейлдекс

>> No.91898  

>>91879
Цветы на голове Уихару ненастоящие.

>> No.92041  
File: 1368010343614.jpg -(59454 B, 400x600) Thumbnail displayed, click image for full size.
59454

дарова,
мне в ближайшее время лень думать, поэтому спрошу, вдруг кому-то делать нечего пять минут.
Вопрос такой: как задать набор положений цилиндров и для каждого уметь считать число точек в нём.
Это простая аналитическая геометрия, есть точка, из неё мы проводим линию в выбранной плоскости под заданным углом к радиус вектору и считаем расстояния от остальных точек до этой прямой. Формулу бы. У меня руки уже неделю до этого не доходят, а может получится круто.

>> No.92042  
File: 1368010874170.png -(3756588 B, 2244x3200) Thumbnail displayed, click image for full size.
3756588

>>92041
Цилиндры по прежнему соосны радиус-вектору (и все остальные данные брать из предыдущей задачи) или нет?

>> No.92043  
File: 1368011430832.jpg -(74489 B, 800x600) Thumbnail displayed, click image for full size.
74489

>>92042
нет, цилиндры ориентированны под заданным углом к радиус вектору. Пускай при этом их центры будут с радиус вектором в одной плоскости, ортогональной плоскость xy.

>> No.92044  
File: 1368011568361.jpg -(44782 B, 398x533) Thumbnail displayed, click image for full size.
44782

кстати, если интересно: я решил не мучится с границами и для каждой точки посчитал радиус максимальной сферы с центром в этой точке, которая бы влезла в объём. Ну и цилиндры не должны выходить за эту сферу.

>> No.92045  
File: 1368012952492.jpg -(1221748 B, 945x1200) Thumbnail displayed, click image for full size.
1221748

>>92043

> Пускай при этом их центры будут с радиус вектором в одной плоскости, ортогональной плоскость xy

Или я уже настолько в невыспавшимся состоянии, что совсем не соображаю или для любой точки можно построить на которой будет лежать радиус-вектор и которая будет ортогональна плоскости xy (которая θ=90°).
>>92044
А для второй задачи цилиндры упростить до сферы не получится?

>> No.92048  
File: 1368014668294.png -(3668775 B, 1442x1986) Thumbnail displayed, click image for full size.
3668775

>>92045
По ходу тебе реально стоит поспать.
>>92043

> Пускай при этом их центры будут с радиус вектором в одной плоскости, ортогональной плоскость xy
>Или я уже настолько в невыспавшимся состоянии, что совсем не соображаю или для любой точки можно построить на которой будет лежать радиус-вектор и которая будет ортогональна плоскости xy (которая θ=90°).

Явно слово пропустил. Плоскость? Ну, для любой точки такая плоскость есть. Она будет неоднозначно определена только в полюсе, но хрен с ним.
>>92044

>А для второй задачи цилиндры упростить до сферы не получится?

для второй задачи него упрощать до сферы, в этой второй ничего не нужно делать с границами и чем-то подобным. Просто нужно определиться как ориентировать цилиндр относительно радиус вектора и уметь считать точки, которые в него попали.

>> No.92054  
File: 1368016282231.jpg -(1256110 B, 1080x1571) Thumbnail displayed, click image for full size.
1256110

>>92048
Плоскость, да. Пойду посплю пожалуй, а то я уже явный бред несу.

>> No.92061  
File: 1368062849852.jpg -(973389 B, 1275x1754) Thumbnail displayed, click image for full size.
973389

r_p, θ_p, φ_p - координаты центра цилиндра
θ_c, φ_c - склонение оси цилиндра
r - радиус основания цилиндра
h - высота цилиндра
r_t, θ_t, φ_t - координаты проверяемой точки

Переносим центр оси координат в центр цилиндра. Тогда координаты центра цилиндра в новой оси будут нулевыми, для проверяемой точки:
r_n=sqrt((r_p*sin(θ_p)*cos(φ_p)-r_t*sin(θ_t)*cos(φ_t))^2+(r_p*sin(θ_p)*sin(φ_p)-r_t*sin(θ_t)*sin(φ_t))^2+(r_p*cos(θ_p)-r_t*cos(θ_t))^2);
θ_n=acos((r_p*cos(θ_p)-r_t*cos(θ_t))/r_n);
φ_n=acos((r_p*cos(φ_p)*sin(φ_p)-r_t*cos(φ_t)*sin(φ_t))/r_n).

А потом проверяем, не вышла ли точка за цилиндр, по новым координатам это сделать проще:
h/2<=r_n*cos( 2*asin(sqrt( (sin(θ_c)*cos(φ_c)-sin(θ_n)*cos(φ_n))^2 + (sin(θ_c)*sin(φ_c)-sin(θ_n)*sin(φ_n))^2 + (cos(φ_c)-cos(φ_n))^2 )) );
r<=r_n*sin( 2*asin(sqrt( (sin(θ_c)*cos(φ_c)-sin(θ_n)*cos(φ_n))^2 + (sin(θ_c)*sin(φ_c)-sin(θ_n)*sin(φ_n))^2 + (cos(φ_c)-cos(φ_n))^2 )) );



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]