Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 08.09.2019
Сообщений: 8
1

Определить точки пересечения поверхности сферы с прямой

08.09.2019, 11:21. Показов 6077. Ответов 5
Метки нет (Все метки)

Определить точки пересечения поверхности сферы с прямой. Окружность задана центром и радиусом. Прямая 2 точками, через которые она проходит. Вот все, что я надумал по этому поводу... Главные вопросы для меня- это, как учесть те прямые, у которых обе точки заданы за пределами сферы и как сделать так, чтоб на экран выводились точки пересечения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "pch.h"
#include <iostream>
#include <cmath> 
#include <cstdlib>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    float centerX, centerY, centerZ, r, x1, y1=0, z1=0, x2, y2, z2;
    cout << "Введите координаты центра сферы\n";
    cin >> centerX >> centerY>> centerZ;
    cout << "Введите радиус сферы\n";
    cin >> r;
    cout << "Введите координаты первой точки, через которую проходит прямая\n";
    cin >> x1>> y1>> z1;
    cout << "Введите координаты второй точки, через которую проходит прямая\n";
    cin >> x2>> y2>> z2;
 
    if ( ( x1 - centerX)*(x1 - centerX) + ( y1 - centerY)*( y1 - centerY) + ( z1 - centerZ)*( z1 - centerZ) <= r * r  || (x2 - centerX)*(x2 - centerX) + (y2 - centerY)*(y2 - centerY) + (z2 - centerZ)*(z2 - centerZ) <= r * r ) 
{
        cout<<"Есть точки пересечения";
    }
    else {
        cout << "Точек пересечения нет";
    }
    
    return 0;
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2019, 11:21
Ответы с готовыми решениями:

Определить точки пересечения прямой и окружности
Задана окружность с центром в точке О(x0,y0) и радиусом R0 и прямая y=ax+b. Определить,...

Точка пересечения прямой и двумерной поверхности
Нужно наиболее оптимальным способом найти точку пересечения прямой и некой двумерной поверхности в...

Найти точки пересечения поверхности и прямой
Найти точки пересечения поверхности и прямой Поверхность: x2/9 - y2/4 =z Прямая: система 2x +...

Определить точки пересечения параболы и прямой
Помогите, пожалуйста. Надо программно найти точки пересечения 3x^2-y+1=0 и прямой 5a1x-5a2y=0....

5
610 / 420 / 205
Регистрация: 06.09.2013
Сообщений: 1,185
08.09.2019, 17:39 2
Там квадратное уравнение составить надо: записываете параметрическое уравнение прямой, подставляете в уравнение поверхности сферы и получаете квадратное уравнение относительно параметра. Решаете и выводите ответ в зависимости от корней.
0
0 / 0 / 0
Регистрация: 08.09.2019
Сообщений: 8
08.09.2019, 19:02  [ТС] 3
А можете специально для тупых составить такое уравнение? Я, честно говоря, совсем не соображаю, как подставлять уравнение прямой в сферу
0
610 / 420 / 205
Регистрация: 06.09.2013
Сообщений: 1,185
09.09.2019, 06:50 4
Лучший ответ Сообщение было отмечено andr_1999 как решение

Решение

Цитата Сообщение от andr_1999 Посмотреть сообщение
А можете специально для тупых составить такое уравнение? Я, честно говоря, совсем не соображаю, как подставлять уравнение прямой в сферу
Могу, конечно, но ведь так неинтересно.
Пусть точки прямой A и B, центр сферы C, радиус R
Параметрическое уравнение прямой:
https://www.cyberforum.ru/cgi-bin/latex.cgi?X = A + t(\bar{B - A})
Уравнение поверхности сферы:
https://www.cyberforum.ru/cgi-bin/latex.cgi?(\bar{X - C})^2 - R^2 = 0
Подставляем вместо X в уравнение сферы уравнение прямой, получаем:
https://www.cyberforum.ru/cgi-bin/latex.cgi?(t(\bar{B - A}) + \bar{A - C})^2 - R^2 = 0
Раскрываем скобки:
https://www.cyberforum.ru/cgi-bin/latex.cgi?t^2(\bar{B - A})^2 + 2 (\bar{B - A},\bar{A - C})t + (\bar{A - C})^2 - R^2 = 0
Вот собственно это квадратное уравнение и нужно решить.
2
0 / 0 / 0
Регистрация: 08.09.2019
Сообщений: 8
11.09.2019, 20:59  [ТС] 5
Спасибо за помощь!
0
0 / 0 / 0
Регистрация: 27.03.2021
Сообщений: 9
27.03.2021, 18:34 6
TC, очень поможете, если у Вас сохранился итоговый код по данному вопросу. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2021, 18:34

Определить класс Прямая на плоскости (пространстве). Определить точки пересечения прямой с осями координат
Можете помочь с прогой, без использования сверхумных схем? Самым простым уровнем знания java....

Точка пересечения луча и поверхности сферы
Подскажите самый простой способ. Точка пересечения луча и поверхности сферы. Двумя точками в...

Реализовать функции получения точки пересечения прямых, прямой, проходящей через две точки
Здравствуйте, программисты! Мне снова попалась задача, условие которой я не могу понять и очень...

Вычислять объем, площадь поверхности, рассчитывать точку пересечения объекта с прямой и т.д
Определите интерфейс IVisitor и реализуйте его в двух классах DimensionsVisitor и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.