Страницы: 1
RSS
Сохранение координаты на наклонной оси
 
Здравствуйте, люди.
Помогите разобраться с непростой задачей.

На листе есть "Линия 2", у которой один конец - связан с "Линией 1".
А второй ее конец - лежит на наклонной оси.

Как сохраняя неизменной длину "Линии 2" - сохранять ее вторую координату - на красной пунктирной линии "Линия 3" ?
То есть чтобы ее вторая координата - скользила по этой "Линии 3" (поскольку длина "Линии 2" - должна быть неизменной).

У самого меня - хватило субстанции под названием мозг - только для закрепления первой координаты "Линии 2", а вот как ее вторую координату закрепить (на оси) - не могу догадаться.
Помогите.
 
Тока на линии - это одна из точек пересечений линии с окружностью радиуса равного вашему отрезку и центром в точке вращения.

http://www.excelunusual.com/how-to-create-an-internal-combustion-engine-2d-animation-in-ms-excel-tut...
Изменено: БМВ - 04.04.2019 20:17:23
По вопросам из тем форума, личку не читаю.
 
БМВ, вы привели ссылку на какую-то анимацию.
У меня в примере ничего не анимируется - просто при щелчке линия единократно перемещается.

Потом там в ссылке рассматривается ДВС.
Но у меня же немного другое - ось идет под наклоном, а не по прямой.
Если бы она по прямой шла - я бы еще наверное догадался бы.
Но эта ось идет под углом - вот в чем дело.
 
Snegovik2, при чем тут анимация? дискретное перемещение - это частный случай непрерывного движения, но не суть. Я вам написал как рассчитать эту Вашу точку на косой. Или вы снова ждете готового решения?
По вопросам из тем форума, личку не читаю.
 
БМВ, хотя бы формулу скажите по которой рассчитывается X и Y второй координаты.
А в макрос - я ее сам переведу.
 
https://yandex.ru/images/search?pos=1&img_url=https%3A%2F%2Fmyslide.ru%2Fdocuments_3%2F5bfbd...
http://www.cleverstudents.ru/line_and_plane/line_passes_through_2_points.html
https://www.abakbot.ru/online-16/230-peresechenie-okruzhnosti-i-pryamoj
По вопросам из тем форума, личку не читаю.
 
БМВ, прочитал ваши ссылки - про пересечение линии с окружностью.
И получилось сделать вот что:
Код
        k = (Y0 - Y1) / (X0 - X1) 'ОПРЕДЕЛЯЕМ ПАРАМЕТРЫ УРАВНЕНИЯ ПРЯМОЙ "ЛИНИЯ 3"
        b = Y1 - k * X1
Код
R = ((X0 - X1) ^ 2 + (Y0 - Y1) ^ 2) ^ 0.5 '  ВЫЧИСЛЯЕМ ДЛИНУ "ЛИНИИ 2"... то есть - "радиус окружности"
Код
    X3 = ((k * X1 + b) ^ 2 + R ^ 2) ^ 0.5 '  ВЫЧИСЛЯЕМ ИТОГОВЫЕ КООРДИНАТЫ (где "радиус" касается "Линии 3")
    Y3 = k * X3 + b
В результате - точка "Линии 2" -  перемещается по наклонной оси.
Но при этом длина "Линии 2" - постоянно меняется, а она должна быть неизменной.
Что же не так ?
Изменено: Snegovik2 - 05.04.2019 00:27:47
 
найдите понятную Вам математику этого процесса
переведите, математику в VBA
все. дело сделано
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Доброе время суток.
Цитата
Snegovik2 написал:
о при этом длина "Линии 2" - постоянно меняется, а она должна быть неизменной.
А собственно, чего другого вы хотели? Было написано
Цитата
БМВ написал:
это одна из точек пересечений линии с окружностью радиуса равного вашему отрезку
а вы вычисляете
Цитата
Snegovik2 написал:
где "радиус" касается "Линии 3"
касаться и пересекать - это не синонимы.
 
Snegovik2, В основном ответ дан. Поясню, нужно решить систему уравнений, и при этом одно из них будет квадратным и как следствие может не имеет решений или аж до двух. , одно из них нужно будет отбросить.
По вопросам из тем форума, личку не читаю.
 
Очень захотелось мультик нарисовать.
Цитата
Snegovik2 написал:
Как сохраняя неизменной длину "Линии 2"
Заморачиваться решением тригонометрических уравнений - не стал,
перепоручил это Подбору_параметра (GoalSeek).
 
Цитата
С.М. написал:
Заморачиваться решением тригонометрических уравнений - не стал,
Александр, а зачем?
Рассмотрим систему координат. Ось Х - красная линия по направлению к перемещающейся по ней точки, ось У - перпендикуляр к красной прямой из центра окружности, начало отсчёта - точка пересечения осей. По координатам точки на окружности: Уто даёт катет треугольника, где Линия 2 - гипотенуза Тогда координаты точки на красной линии: Укт = 0, а Хкт = Хто + Корень("Линия 2"^2 - Уто^2). Остаётся пересчитать эти координаты в систему координат пространства рабочего листа, поворотом центральной системы и добавлением координат центра системы в системе координат пространства листа.
 
С.М., а к моему вопросу это как применить ?
У меня никакой диаграммы на листе - нет.
 
Цитата
Андрей VG написал #12:
Рассмотрим систему координат ...
Андрей, да ради Бога, я ж не возражаю :-) .
Цитата
Snegovik2 написал #13:
С.М. , а к моему вопросу это как применить ?
Snegovik2, я показал своё решение,
Цитата
С.М. написал #11:
Очень захотелось мультик нарисовать.
а извлечёте для себя из этого что-либо полезное - Ваше дело (мы же на форуме, а не на семинаре по информатике).
Изменено: С.М. - 05.04.2019 13:48:44
 
Цитата
С.М. написал:
а не на семинаре по информатике
математике  :D

Не смотря на то, что вариант с удалением и перерисовкой линии мне не нравится, да же в этом случае лучше выделить повторяющиеся расчеты в подпрограммы.

Скрытый текст
Изменено: БМВ - 05.04.2019 13:56:37
По вопросам из тем форума, личку не читаю.
 
БМВ, применил этот код.
Но что-то вот - опять не работает.

Линия2 по-прежнему меняет свою длину.
 
Snegovik2, я не корректировал вычисления, я просто чуть причесал код. на решение квадратного уравнения у меня времени не хватает.
По вопросам из тем форума, личку не читаю.
 
БМВ, а это - разве не решение квадратного уравнения ?
Код
 X3 = ((k * X1 + b) ^ 2 + R ^ 2) ^ 0.5 '  ВЫЧИСЛЯЕМ ИТОГОВЫЕ КООРДИНАТЫ (где "радиус" касается "Линии 3")    
Y3 = k * X3 + b
Я эту формулу выводил как раз из квадратного уравнения.
 
нет, это не решение квадратного уравления
это присвоение переменной Х3, значения зависящего от k, X1, b и R
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
С.М. написал:
я ж не возражаю :-) .
А вы попробуйте :)  Без квадратных уравнений.
 
Андрей VG, это тоже не подходит.
В вашем решении - нет ни одной линии - только полилинии.
 
Цитата
Андрей VG написал #20:
С.М.  написал:я ж не возражаю :-) .
А вы попробуйте
Андрей, ну хорошо, Вы - пересчитываете координаты в систему координат пространства рабочего листа (с),
я - итерационно подгоняю расстояние между точками на окружности и на наклонной к длине шатуна,
на/в Украине закончили подсчёт голосов первого тура.
https://www.youtube.com/watch?v=zgctazKDhw0  !  
 
Цитата
Snegovik2 написал:
нет ни одной линии - только полилинии.
А в чём такая принципиальная разница? Но если вам шашечки, то изучаете How do I determine end points of a Line drawing object?. Первый ответ даёт решение прямой задачи - по 6 свойствам графического объекта типа msoLine получить координаты начальной и конечной точки линии. Разберите и решите обратную задачу, по координатам начальной и конечной точки задать значения 6 свойств msoLine.
Математическая часть, насколько могу понять смысл вашей реплики, у вас проблем не вызвала - весьма похвально.
Успехов.
Цитата
С.М. написал:
я - итерационно подгоняю
Александр, а раньше вы подгонками не занимались. Не, я не против. В данном случае любое решение подойдёт. Главное результат :)
 
Цитата
Андрей VG написал:
Александр, а раньше вы подгонками не занимались
Ага, мы с GoalSeek и Solver'ом - жулики и воры. Подозреваемый Solver уже даёт показания:
 
С.М., Думаю Андрей не против самого метода, но в данном случае он не совсем оправдан, хотя требует меньше телодвижений при раработке, но как любая итерация более ресурсоемок. Это тоже что и вместо изменения точек отрезка удалять и рисовать его заново, хотя итог один.
По вопросам из тем форума, личку не читаю.
 
Здравствуйте форумчане.
Помогите решить проблему.

На листе есть линия "Линия 2", у которой один конец - связан с "Линией 1".
А второй ее конец - лежит на наклонной оси "Линия 3".

Сейчас - вторая точка "Линии 2" -  перемещается по наклонной оси.
Но при этом длина "Линии 2" - постоянно меняется, а она должна быть неизменной.

Как макросом, сохраняя неизменной длину "Линии 2" - сохранять ее вторую координату - на красной пунктирной линии "Линия 3" ?
То есть - как правильно определить координату X3 (место пересечения Линии2 и Линии3), которая сейчас неправильно определяется ?
Код
 X3 = ((k * X1 + b) ^ 2 + R ^ 2) ^ 0.5 '  ВЫЧИСЛЯЕМ ИТОГОВЫЕ КООРДИНАТЫ (где "радиус" касается "Линии 3")
Y3 = k * X3 + b
 
перекрестие с тем Я все ж сторонник не рисовать линии лишний раз. так что сделал по своему, на листе формулы не нужны, это так, для проверки. Не тема этого обсуждения, но не обрабатываю вариант когда длинны отрезка не хватает и если он развернут в другую сторону, и движется по линии ниже и левее.
Изменено: БМВ - 07.04.2019 16:27:34
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх