Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
#1

Квадрат и прямая - C++

20.07.2011, 02:35. Просмотров 2009. Ответов 16
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста написать программу на языке Си(не С++). Дан квадрат с координатами х1,у1 и х2,у2, так же даны координаты прямой х3,у3 и х4,у4. Нужно определить координаты точек пересечения прямой и квадрата.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 02:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Квадрат и прямая (C++):

Структуры (Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая) - C++
Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая. Для К заданных прямых вывести...

Если квадрат числа меньше 100, напечатать число и его квадрат - C++
Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат.

Класс «Квадрат»: можно ли вписать в объект-квадрат со стороной A окружность радиуса R - C++
Люди помогите, сижу уже неделю, выходит какая-то фигня. Хочу научиться, но тяжеловато) Объясните кто может, как будет выглядеть код? ...

Нарисовать квадрат с одинокой звёздочкой в центре. Весь квадрат орисовывается плюсиками - C++
Нарисовать квадрат с одинокой звёздочкой в центре. Весь квадрат орисовывается плюсиками. Пользователь задаёт высоту и ширину.С++ Помогите...

Вывести квадрат большего числа и квадрат меньшего - C++
ошибка вывода и не правильный ответ #include <iostream> #include <string> using namespace std; int main() { int a, b,...

Вывести квадрат самого большого из заданных чисел в первую строку, а квадрат самого маленького во вторую - C++
Здравствуйте помогите решить задачу сама по себе задача очень легкая но как ее решить используя функцию перегрузки не могу понять условие...

16
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.07.2011, 02:41 #2
Cras, какие математические соображения по поводу решения этой задачи?
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.07.2011, 02:59 #3
Уравнение прямой в отрезках

y - y1 x - x1
------- = -------
y2 - y1 x2 - x1

Итак у квадрата 4 ри стороны с 4-мя вершинами A,B,C,D
А|-----|B
| |
C|-----|D

Забиваем 4-ри уравнения для сторон квадрата и уравнение для прямой через х3,у3 и х4,у4 и решаем систему для каждой из сторон и прямой, если точка пересечения имеет координаті принадлежащие множеству АВСД то прямая пересекает квадрат, если не принажлежит, значит прямая не пересекает...
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.07.2011, 03:00 #4
-=ЮрА=-, дали бы ТСу подумать)
0
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
23.07.2011, 12:44  [ТС] #5
А как забить 4 уравнения для квадрата? Если даны 2 точки x1,y1 и x2,y2.
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
23.07.2011, 12:45 #6
А ты нарисуй на листочке квадрат, отметь точки x1, y1, x2, y2, и я думаю ты догадаешься как найти x2, y3, x4, y4.
0
MadMag
(Yellow_Duck)
1261 / 130 / 8
Регистрация: 16.10.2008
Сообщений: 735
23.07.2011, 12:47 #7
и я думаю ты догадаешься как найти x2, y3, x4, y4.

Не по теме:

epic fail

0
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
23.07.2011, 13:25  [ТС] #8
У нас на квадрате даны точки A(x1.y1) и D(x2.y2) по условию. Не понимаю как найти ещё 2 точкии.

Добавлено через 18 минут
А понял, координаты точки В будут х2,у1 , а точки С х1,у2

Добавлено через 2 минуты
А как теперь это все в программе написать? помогите пожалуйста
0
MadMag
(Yellow_Duck)
1261 / 130 / 8
Регистрация: 16.10.2008
Сообщений: 735
23.07.2011, 13:29 #9
Cras, это квадрат!!! Это не A и D, потому что квадрат задается несмежными вершинами на плосксти, потому что А и D задают два кадрата!

ВНЕЗАПНО его сторона равна модуля вектора (x2-x1, y2-y1), поделенному на корень из двух!
Тогда план такой:

1. Считаешь координату центра отрезка между двумя исходными точками(это центр квадрата)
2. Вычитаешь из координат первой и второй точки координаты центр x и y соответственно.
3. Поворачиваешь квадрат на 90 градусов(мысленно)
Получается, что координаты, скажем второй точки будут (-y1, x1), а третей (-y2, x1).
4. Теперь у тебя есть координаты всех четырех точек в смещенной системе координат, дальше ко всем ним соответственно прибавляешь х и у координаты той точки, которая была центром квадрата.
То есть, ты смещаешь на этот вектр теперь назад. Офигенно.

p.s. в третьем пункте смешенные координаты.
Если хочешь - выложу прогу.
0
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
23.07.2011, 13:50  [ТС] #10
Да, напиши пожалуйста.
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
23.07.2011, 13:59 #11
Если речь о нахождении остальных вершин квадрата по 2 противоположным, то вот:
Поиск вершин квадрата
0
MadMag
(Yellow_Duck)
1261 / 130 / 8
Регистрация: 16.10.2008
Сообщений: 735
23.07.2011, 16:01 #12
Нет, речь не об этом.

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
32
33
34
#include<stdio.h>
 
struct pt{
  int x, y;
  pt& operator +=(const pt &other){
    x += other.x, y += other.y;
    return *this;
  }
  pt& operator -=(const pt &other){
    x -= other.x, y -= other.y;
    return *this;
  }
};
 
 
//квадрат такой:
//b--c
//|  |
//a--d
 
int main(void){
  pt a, c;
  // считываешь a, c 
  
  pt centr = {(a.x + c.x) / 2, (a.y + c.y) / 2};
  a -= centr; c -= centr;
  pt b = {-c.y, c.x}, d = {-a.y, a.x};
  a += centr; b += centr; c += centr; d += centr;
  //спасибо центру за это
 
  /*тут строишь прямые через точки квадрата*/
  
  return 0;
}
То, что в комментах, можно найти на e-maxx.ru
0
grizlik78
Эксперт С++
1971 / 1464 / 122
Регистрация: 29.05.2011
Сообщений: 3,029
23.07.2011, 16:12 #13
Цитата Сообщение от MadMag Посмотреть сообщение
Нет, речь не об этом.
Смешно. Говоришь, что не об этом, а делаешь именно это. Да ещё и через int почему-то, получая в общем случае неверный результат (когда координаты нечётные присутствуют).
0
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
24.07.2011, 12:54  [ТС] #14
MadMag, Что-то я не нашёл как построить прямые через точки квадрата,напиши пожалуйста.
0
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
26.07.2011, 13:09  [ТС] #15
Помогите написать уравнения сторон квадрата на Си.
0
26.07.2011, 13:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 13:09
Привет! Вот еще темы с ответами:

Окружность и прямая - C++
Помогите написать программу на чистом Си. Вот условие:&quot;Дана окружность с координатами Xо,Yo и радиусом r. Дана прямая с координатами...

Параллельная прямая - C++
Надо по заданным A,B,C найти две прямые на расстоянии от заданной от R. Кто-нибудь парочку формул для нахождения не скинет?

Прямая и окружность - C++
Есть прямая, заданая уравнением Ax+By+C=0 И окружность с координатами центра и радиусом Нужно найти координаты точек пересечения если...

Круг и прямая - C++
Дорогие форумчане! Не откажите в помощи, если есть идеи по заданию. Алгоритм или небольшая помощь с кодом На плоскости заданы...


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

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

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