Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

Здравствуйте. Помогите пожалуйста написать программу на языке Си(не С++). Дан квадрат с координатами х1,у1 и х2,у2, так же даны координаты прямой х3,у3 и х4,у4. Нужно определить координаты точек пересечения прямой и квадрата.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.07.2011, 02:41     Квадрат и прямая #2
Cras, какие математические соображения по поводу решения этой задачи?
-=ЮрА=-
Заблокирован
Автор 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 и решаем систему для каждой из сторон и прямой, если точка пересечения имеет координаті принадлежащие множеству АВСД то прямая пересекает квадрат, если не принажлежит, значит прямая не пересекает...
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.07.2011, 03:00     Квадрат и прямая #4
-=ЮрА=-, дали бы ТСу подумать)
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
23.07.2011, 12:44  [ТС]     Квадрат и прямая #5
А как забить 4 уравнения для квадрата? Если даны 2 точки x1,y1 и x2,y2.
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
23.07.2011, 12:45     Квадрат и прямая #6
А ты нарисуй на листочке квадрат, отметь точки x1, y1, x2, y2, и я думаю ты догадаешься как найти x2, y3, x4, y4.
MadMag
(Yellow_Duck)
1260 / 129 / 8
Регистрация: 16.10.2008
Сообщений: 735
23.07.2011, 12:47     Квадрат и прямая #7
и я думаю ты догадаешься как найти x2, y3, x4, y4.

Не по теме:

epic fail

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 минуты
А как теперь это все в программе написать? помогите пожалуйста
MadMag
(Yellow_Duck)
1260 / 129 / 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. в третьем пункте смешенные координаты.
Если хочешь - выложу прогу.
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
23.07.2011, 13:50  [ТС]     Квадрат и прямая #10
Да, напиши пожалуйста.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
23.07.2011, 13:59     Квадрат и прямая #11
Если речь о нахождении остальных вершин квадрата по 2 противоположным, то вот:
Поиск вершин квадрата
MadMag
(Yellow_Duck)
1260 / 129 / 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
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
23.07.2011, 16:12     Квадрат и прямая #13
Цитата Сообщение от MadMag Посмотреть сообщение
Нет, речь не об этом.
Смешно. Говоришь, что не об этом, а делаешь именно это. Да ещё и через int почему-то, получая в общем случае неверный результат (когда координаты нечётные присутствуют).
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
24.07.2011, 12:54  [ТС]     Квадрат и прямая #14
MadMag, Что-то я не нашёл как построить прямые через точки квадрата,напиши пожалуйста.
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
26.07.2011, 13:09  [ТС]     Квадрат и прямая #15
Помогите написать уравнения сторон квадрата на Си.
-=ЮрА=-
Заблокирован
Автор FAQ
26.07.2011, 13:51     Квадрат и прямая #16
Уравнения квадрата это уравнение 4-х прямых, тебе нужно найти пересекаются ли эти прямые с исходной,посмотри
Окружность и прямая
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 13:58     Квадрат и прямая
Еще ссылки по теме:

Создайте структуру Прямая C++
C++ Структуры (Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая)
Прямая линия на плоскости C++
C++ Вывести квадрат большего числа и квадрат меньшего
C++ Вывести квадрат самого большого из заданных чисел в первую строку, а квадрат самого маленького во вторую

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

Или воспользуйтесь поиском по форуму:
Cras
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 16
26.07.2011, 13:58  [ТС]     Квадрат и прямая #17
-=ЮрА=-, Я это понимаю, но не пойму как написать это на Си. Можешь написать пожалуйста
Yandex
Объявления
26.07.2011, 13:58     Квадрат и прямая
Ответ Создать тему
Опции темы

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