Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 937

Как получить координаты точек отрезка

24.03.2023, 21:02. Показов 2381. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

Вопрос как можно получить список координат точек отрезка?
Например есть отрезок АВ (т.А(1,1), т.В(5,5)) -> я получаю координаты точек отрезка [(1,1), (2,2), (3,3), (4,4), (5,5)].
Первое что приходит в голову это для уравнения прямой y = kx + b найти коэффициенты, ну и соответственно путем подстановки "х" найти все "y".

Есть ли более элегантный способ получить желаемое?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2023, 21:02
Ответы с готовыми решениями:

Найти координаты точек отрезка если известны координаты концов отрезка
Отрезок АВ разделен на 5 равных частей точками С,D,Е,F найти координаты точек D,С если известны точки А(2,2,5) В(-3,1,0)

Как найти координаты конца отрезка, зная координаты начала, длину отрезка и вектор направления?
На плоскости даны длина отрезка l, координаты начала отрезка , и координаты вектора направления По какой формуле можно найти координаты...

Найти координаты точек начала и конца отрезка
Даны две параллельные прямые А и Б. У прямых известны точки начала и окончания (прямая А начало(-2;1) конец(2;5), прямая Б начало (1;2)...

3
 Аватар для SashaRasha
91 / 47 / 8
Регистрация: 08.10.2008
Сообщений: 445
24.03.2023, 22:18
Лучший ответ Сообщение было отмечено Михалыч как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
# Координаты точек A и B
x1, y1 = 1, 1
x2, y2 = 5, 5
 
# Рассчитываем угловой коэффициент и свободный член уравнения прямой
k = (y2 - y1) / (x2 - x1)
b = y1 - k * x1
 
# Создаем список из координат точек на отрезке AB
my_list = [(x, int(k*x + b)) for x in range(x1, x2+1)]
print(my_list)
Добавлено через 9 минут
В этом коде есть костыль. Это
Python
1
int(k*x + b)
При приведении типа, дробная часть отбрасывается. И если, к примеру, мы не знаем будет ли дробная часть k равной нулю, то будет ошибка в расчете. Правильный код выглядит так
Python
1
2
3
4
5
6
7
8
9
10
11
# Координаты точек A и B
x1, y1 = 1, 1
x2, y2 = 5, 5
 
# Рассчитываем угловой коэффициент и свободный член уравнения прямой
k = (y2 - y1) / (x2 - x1)
b = y1 - k * x1
 
# Создаем список из координат точек на отрезке AB
my_list = [(x, k*x + b) for x in range(x1, x2+1)]
print(my_list)
но список, при этом, будет вы глядеть так:
Python
1
[(1, 1.0), (2, 2.0), (3, 3.0), (4, 4.0), (5, 5.0)]
Добавлено через 33 минуты
как вариант, можно создать условие типа

Python
1
2
if (y2 - y1) % (x2 - x1) == 0
    k = (y2 - y1) // (x2 - x1)
тогда типа float не будет, но тогда если k все таки дробное, то дальше код уже работать не будет как надо, но хотя бы уже не костыль и мы все таки знаем, что k равен единице. Но для полноценно рабочего кода нужно все таки создать останов программы при дробном k. Либо сделать разветвление.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Координаты точек A и B
x1, y1 = 1, 1
x2, y2 = 5, 5
 
# Рассчитываем угловой коэффициент и свободный член уравнения прямой
if (y2 - y1) % (x2 - x1) == 0:
    k = (y2 - y1) // (x2 - x1)
    b = y1 - k * x1
    # Создаем список из координат точек на отрезке AB
    my_list = [(x, k*x + b) for x in range(x1, x2+1)]
    print(my_list)
else:
    print('k - дробное')
    my_list = [(x, k*x + b) for x in range(x1, x2+1)]
    print(my_list)
Хотя, в принципе, и изначальный вариант норм будет, но для развития, думаю, не помешает

Добавлено через 8 минут
Только, конечно
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Координаты точек A и B
x1, y1 = 1, 1
x2, y2 = 5, 5
 
# Рассчитываем угловой коэффициент и свободный член уравнения прямой
if (y2 - y1) % (x2 - x1) == 0:
    k = (y2 - y1) // (x2 - x1)
    b = y1 - k * x1
    # Создаем список из координат точек на отрезке AB
    my_list = [(x, k*x + b) for x in range(x1, x2+1)]
    print(my_list)
else:
    k = (y2 - y1) / (x2 - x1)
    b = y1 - k * x1
    print('k - дробное')
    my_list = [(x, k*x + b) for x in range(x1, x2+1)]
    print(my_list)
Давно не прогал, запарился
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.03.2023, 22:22
Лучший ответ Сообщение было отмечено Михалыч как решение

Решение

Михалыч, тебе целочисленные координаты нужны или что? Может какое-то количество равноудаленных точек на отрезке?

Добавлено через 49 секунд
На тебе идею
Python
1
2
3
4
5
6
7
8
import numpy as np
 
x1, y1 = 1, 1
x2, y2 = 6, 2
points = 5
 
x, y = np.linspace(x1, x2, points), np.linspace(y1, y2, points)
print(*[f'({a},{b})' for a, b in zip(x, y)])
4
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 937
24.03.2023, 22:50  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Может какое-то количество равноудаленных точек на отрезке?
Читаешь мысли через экран?) целочисленные это я уж упростил, что бы самому на листочке проще нарисовать было А так как раз то что нужно, что бы длинную ломанную линию растрировать в точки.

SashaRasha, благодарю за такой развернутый ответ

Не по теме:

Интерполяция)))) Я вспомнил как это называется)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2023, 22:50
Помогаю со студенческими работами здесь

Создайте класс «Отрезок», с полями x1, y1, x2, y2 (координаты двух точек отрезка)
Создайте класс «Отрезок», с полями x1, y1, x2, y2 (координаты двух точек отрезка), методами для перемещения отрезка, вывод на экран,...

Как получить координаты точек из Path.Data в UWP?
В UWP приложении есть некий Path.Data из которого нужно вытащить координаты какой-нибудь точки. Например есть шейп: ...

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

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
Получилось сделать для координаты одной точки, а как сделать для множества точек, через цикл или массив? #include <stdio.h> ...

Как получить все точки прямой на изображении? (координаты точек)
есть изображение (bitmap), на которое цепляется рисовалка (Grafics) рисуется прямая по двум точкам как найти координаты точек...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru