Как повернуть квадрат на 45 градусов
Перейти к содержимому

Как повернуть квадрат на 45 градусов

  • автор:

Повернуть квадрат на 45 градусов

Katya031203

Дві доярки надоїли 578 л молока. Перша доярка обслуговувала 18 корів, а друга — 16 корів. Скільки літрів молока надоїла кожна доярка, якщо корови за о … дне доїння давали однакову кількість молока?

(x + 2) — (x + 7 ) допоможіть.

Пожалуйста решите столбиком. ❤️‍​

Знай ты значения выразив.СРОЧНА. 126км608м/8м = 27кг134г*3= 137грн60к/4= 124кг95г*6=

Как вычислить новую ширину квадрата, если повернуть его на 45 градусов?

Имеется блок, к примеру, шириной и высотой 100px. При помощи transform: rotate(45deg) я поворачиваю его на 45 градусов и, разумеется, блок занимает больше пространства как по горизонтали так и по вертикали. Так вот, как можно вычислить на уровне скрипта новую ширину и высоту? Должен же быть какой то алгоритм!?

  • Вопрос задан более трёх лет назад
  • 430 просмотров

2 комментария

Простой 2 комментария

Rsa97

Конечно есть такой алгоритм. Его изучают в 7 классе средней школы. Тема «прямоугольный треугольник», предмет «геометрия».

diadiafiodor @diadiafiodor

img7.jpg

Вот теорема с доказательством

Решения вопроса 1

Figment

5af47af659b60666492168.png

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

Т.к. квадрат вы повернули, то грубо говоря, ширина = диагонали.

Повернуть квадрат на 45 градусов

Author24 — интернет-сервис помощи студентам

В задании надо нарисовать ромб, но один знакомый подсказал, что модно сделать квадрат, а затем повернуть его на 45 градусов и получить ромбик (скорее, просто для того, чтоб визуально получился ромбик). В итоге, все вышло, но как повернуть квадратик, я так и не понял. Есть ли какая-нибудь функция, чтоб так сделать, или может кто-нибудь сможет подсказать как просто ромб сделать?

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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
using System; using System.Drawing; using System.Windows.Forms; namespace WinFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); InitializeComponent(); brush = brush1; KeyPreview = true; } int sec = 0; //таймер int w = 40, h = 40; //ширина и высота прямоугольника int x = 1, y = 100; //координаты прямоугольника при запуске программы int dx = 5; //добавление по оси x int dy = 5; //добавление по оси y int a; public enum STATUS { Left, Right, Up, Down }; //направления движения STATUS flag; //флаг изменения направления движения SolidBrush brush1 = new SolidBrush(Color.Red); // кисть SolidBrush brush2 = new SolidBrush(Color.Blue); // кисть SolidBrush brush; Rectangle rc; //прямоугольная область, в которой находиться фигура public int MySpeed { get{ return 100 - timer1.Interval; } set{ timer1.Interval = 100 - value; } } public int track1 { get{ return a; } set{ a = value; } } //get и set для цвета в прямом направлении public Color MyColor1 { get{ return brush1.Color; } set{ brush1.Color = value; } } //get и set для цвета в обратном направлении public Color MyColor2 { get{ return brush2.Color; } set{ brush2.Color = value; } } //get и set для задачи направления public STATUS myflag { get{ return flag; } set{ flag = value; } } //get set для Enabled кнопки 2, чтобы при запущеном меню настрйоки кнопка блокировалась. public bool myButton { get{ return button2.Enabled; } set{ button2.Enabled = value; } } private void timer1_Tick(object sender, EventArgs e) { sec++; // секунды //label1.Text = "Скорость: " + (track1 + 1); rc = new Rectangle(x, y, w, h); // размер прямоугольной области this.Invalidate(rc, true); // вызываем прорисовку области if (flag == STATUS.Left) // движение влево x -= dx; if (flag == STATUS.Right) // движение вправо x += dx; if (flag == STATUS.Up) // движение вверх y -= dy; if (flag == STATUS.Down) // движение вниз y += dy; if (x >= (this.ClientSize.Width - w)){ // если достигли правого края формы //dodelat flag = STATUS.Left; // меняем статус движения на левый brush = brush2; } else if (x  1){ // если достигли левого края формы flag = STATUS.Right; // меняем статус движения на правый brush = brush1; } if (y >= (this.ClientSize.Height - w)){ // если достигли нижнего края формы flag = STATUS.Up; // меняем статус движения на вверх brush = brush2; } else if (y  1){ // если достигли вверхнего края формы flag = STATUS.Down; // меняем статус движения на нижний brush = brush1; } rc = new Rectangle(x, y, w, h); // новая прямоугольная область this.Invalidate(rc, true); // вызываем прорисовку этой области } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.FillRectangle(brush, rc); } private void Form1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape){ this.Close(); } } private void button1_Click(object sender, EventArgs e) { if (button1.Text == "Стоп"){ timer1.Stop(); button1.ForeColor = Color.Green; button1.Text = "Начать"; } else if (button1.Text == "Начать"){ timer1.Start(); button1.ForeColor = Color.Red; button1.Text = "Стоп"; } } private void button2_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Owner = this; form2.Show(); button2.Enabled = false; } } }

Повернуть точки квадрата?

Допустим есть квадрат. Сейчас его угол поворота равен 0. Одна из его точек при угле 0 находится на координате (-0.5; 0.0; 0.5). Теперь допустим я его хочу повернуть на 45.0 градусов по R(otation)Y (Y высота)

Вот начальное положение (вид сверху):

gtpAryW.png

И вот эти координаты ? мне нужно найти исходя из угла 45.

b3KG6uJ.png

Ну и можно пожалуйста формулу для поворота по RX, RZ (я так понимаю там нужно как-то с sin cos tan играться). Спасибо всем.

  • Вопрос задан более трёх лет назад
  • 2090 просмотров

Комментировать
Решения вопроса 1
xmoonlight @xmoonlight
https://sitecoder.blogspot.com

Вместо Y — подставьте Z и получите то, что нужно Вам.

Поворот вокруг центра:
X = x * cos(alpha) — y * sin(alpha);
Y = x * sin(alpha) + y * cos(alpha);

Общая формула:
X = (x — x0) * cos(alpha) — (y — y0) * sin(alpha) + x0;
Y = (x — x0) * sin(alpha) + (y — y0) * cos(alpha) + y0;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *