Вертикальная ось симметрии python

создание 3D-конуса или диска и постоянное обновление его оси симметрии с помощью matplotlib

Я имею в виду, что конус или диск движется или вращается вместе со своей осью симметрии. Точнее, я создаю эту ось, которая постоянно меняется со временем:

line = ax.plot([x,0],[y,0],[z,z- n_o],color='#000066', marker= 'o') 

Мне нужно, чтобы грань конуса или круга всегда была перпендикулярна этой оси. Сначала я попробовал более простой вариант, создав 2D-круг, а затем подняв его в нужное мне положение:

circle = Circle((0, 0), .3, color='r') ax.add_patch(circle) art3d.pathpatch_2d_to_3d(circle, z=1) 

Но это не сделает поверхность круга перпендикулярной движущейся оси. Интересно, есть ли какая-нибудь функция в matplotlib, которую я могу использовать для поворота этой грани конуса/круга?

Если бы я начал с другого пути, создав 3D-объект, например эллипсоид, проблема осталась: как сделать так, чтобы объект двигался со своей осью симметрии, как твердое тело (палка со своей осью), а не висящий там фонарь ( привязан только к фиксированной точке)?

u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] x=np.cos(u)*np.sin(v) y=np.sin(u)*np.sin(v) z=.3*np.cos(v) ax.plot_wireframe(x, y, z, color="r") 

1 ответ

from mpl_toolkits.mplot3d import Axes3D def euler_rot(XYZ,phi,theta,psi): '''Returns the points XYZ rotated by the given euler angles''' ERot = np.array([[np.cos(theta)*np.cos(psi), -np.cos(phi)*np.sin(psi) + np.sin(phi)*np.sin(theta)*np.cos(psi), np.sin(phi)*np.sin(psi) + np.cos(phi)*np.sin(theta)*np.cos(psi)], [np.cos(theta)*np.sin(psi), np.cos(phi)*np.cos(psi) + np.sin(phi)*np.sin(theta)*np.sin(psi), -np.sin(phi)*np.cos(psi) + np.cos(phi)*np.sin(theta)*np.sin(psi)], [-np.sin(theta), np.sin(phi)*np.cos(theta), np.cos(phi)*np.cos(theta)]]) return ERot.dot(XYZ) u = np.linspace(0,2*np.pi,50) num_levels = 10 r0 = 1 # maximum radius of cone h0 = 5 # height of cone phi = .5 # aka alpha theta = .25 # aka beta psi = 0 # aka gamma norm = np.array([0,0,h0]).reshape(3,1) normp = euler_rot(norm,phi,theta,psi) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot([0,normp[0]],[0,normp[1]],zs= [0,normp[2]]) x = np.hstack([r0*(1-h)*np.cos(u) for h in linspace(0,1,num_levels)]) y = np.hstack([r0*(1-h)*np.sin(u) for h in linspace(0,1,num_levels)]) z = np.hstack([np.ones(len(u))*h*h0 for h in linspace(0,1,num_levels)]) XYZ = np.vstack([x,y,z]) xp,yp,zp = euler_rot(XYZ,phi,theta,psi) ax.plot_wireframe(xp,yp,zp) 

Чтобы нарисовать один круг, сдвинутый по нормали на h0 :

x=r0*np.cos(u) y=r0*np.sin(u) z=h0*np.ones(len(x)) XYZ = np.vstack([x,y,z]) xp,yp,zp = euler_rot(XYZ,phi,theta,psi) ax.plot(xp,yp,zs=zp) 

В качестве упражнения остается получить углы Эйлера из заданного вектора.

Читайте также:  Html font background transparent

Источник

Дана квадратная матрица, что состоит из натуральных чисел, зеркально отобразить её элементы

Дана квадратная матрица, что состоит из натуральных чисел, зеркально отобразить её элементы
Дана квадратная матрица, что состоит из натуральных чисел, зеркально отобразить её элементы.

Дана матрица NXM, состоящая из натуральных чисел Зеркально отразить ее элементы относительно вертикальной оси симметрии
Здравствуйте, помогите, пожалуйста, написать программы на данные задания и блок-схемы 2. Дана.

Дана квадратная случайная матрица. Зеркально отразить ее элементы относительно побочной диагонали
package com.company; import java.lang.String; import java.util.Random; class Main < .

Эксперт PythonЭксперт Java

1 2 3 4 5 6 7 8 9 10 11 12 13
def mirror(matrix): length = len(matrix) - 1 for i in range(length): for j in range(length - i + 1): x = matrix[i][j] matrix[i][j] = matrix[length - j][length - i] matrix[length - j][length - i] = x arr = [[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]] print(arr) mirror(arr) print(arr)

Дана квадратная матрица NxN. Зеркально отразить элементы матрицы относительно главной диагонали
Дана квадратная матрица NxN. Зеркально отразить элементы матрицы относительно главной диагонали.

Матрица. Зеркально отобразить ее элементы относительно горизонтальной оси симметрии
1)дана квадратная матрица NxM.состоящая из натуральных чисел.Зеркально отобразить ее элементы.

Дана квадратная матрица целых чисел. Выписать все элементы матрицы, находящиеся ниже главной диагонали
Дана квадратная матрица целых чисел. Выписать все элементы матрицы, находящиеся ниже главной.

Источник

Решение задачи о вертикальной линии симметрии с собеседования в Яндекс

Условие. Дан массив точек с целочисленными координатами (x, y). Определить, существует ли вертикальная прямая, делящая точки на 2 симметричных относительно этой прямой множества.

Дано: [(1, 3), (3, 3), (2, 2), (2, 10), (0, 4), (4, 4)]

Решение. Данная задача может испугать своей «математичностью» — придется вспомнить школьную программу, а именно понятие двухмерной плоскости и координат. Также для решения поможет нарисовать систему координат на листочке, разбросать на ней точки и подумать, как бы проходила ось симметрии.

Читайте также:  Java doc link to class

На что стоит обратить внимание:

  1. Требуется найти вертикальную прямую, то есть по сути от нас требуют симметрию по оси Х;
  2. Симметрия подразумевает, что у каждой точки есть пара, которая отстает на такое же расстояние от оси симметрии (по Х в этом случае), что и данная точка, только с другой стороны.

Таким образом, можно прикинуть алгоритм для решения задачи:

  1. Найти Х координату оси симметрии. Можно догадаться, особенно из рисунка, что эта координата равна среднему значению Х координат всех точек множества.
  2. Для каждой точки найти пару. Пройтись по списку точек и попробовать найти пару относительно оси симметрии для каждой из представленных в множестве. Напомню, что парой является точка, обладающая той же Y координатой (потому что симметрия вертикальная), а координата X отличается на два расстояния до оси симметрии.

Источник

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии

Добрый день. Нуждаюсь в помощи в написании кода. Буду очень вам благодарен за помощь.
Дана квадратная матрица порядка m. Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы

Зеркально отразить элементы матрицы относительно главной диагонали
Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно главной диагонали.

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

Заполнить матрицу случайными числами. Отразить симметрично относительно вертикальной оси сектора матрицы
Заполнить матрицу случайными числами. Отразить симметрично относительно вертикальной оси сектора.

Зеркально отразить изображение относительно побочной диагонали
В файле image.jpg лежит изображение с одинаковой шириной и высотой. Зеркально отразите его.

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии
Дана матрица размера M × N. Зеркально отразить ее элементы относительно горизонтальной оси.

import numpy as np m = int(input("m = ")) r = np.random.rand(m*(m+1)//2) print(r) sym = np.zeros((m,m)) for i in range(m): t = i*(i+1)//2 sym[i,0:i+1] = r[t:t+i+1] sym[0:i,i] = r[t:t+i] print(sym) input() print()

Эксперт Python

Лучший ответ

Сообщение было отмечено mik-a-el как решение

Читайте также:  Нахождение среднего числа питон

Решение

import numpy as np m = int(input("m = ")) r = np.random.randint(1,9,(m,m)) print(r) print(np.flip(r,0)) print(r[::-1,:])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
from random import randint #============================================================================== def print_matr(matr): print() for row in matr: print(*row) #============================================================================== def mirror(matr): matr[::] = matr[::-1] #============================================================================== n = int( input('n = ') ) matr = [ [ randint(1,10) for j in range(n) ] for i in range(n) ] print_matr(matr) mirror(matr) print_matr(matr)

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии
Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно горизонтальной оси.

Зеркально отразить элементы относительно горизонтальной оси симметрии матрицы
Помогите с заданием: 1)Зеркально отразить элементы относительно горизонтальной оси симметрии.

Зеркально отразить элементы относительно горизонтальной оси симметрии матрицы
дана квадратнк=ая матрица порядка М зеркально отразить ее элементы относительно горизонтиальной оси.

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии
Помогите сделать программу по заданию: Дана квадратная матрица порядка M. Зеркально отразить ее.

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии
Дана матрица размера M×N. Зеркально отразить ее элементы относительно горизонтальной оси симметрии.

Источник

Оцените статью