Как вращаться, масштабируйтесь и переведите матрицу внезапно в C#?

Вы можете создать тему со всеми необходимыми свойствами, а затем использовать оператор распространения, чтобы добавить тему только к нужным кнопкам.

class App extends React.Component {
  render() {
    const theme = {
        buttonStyle: {
          backgroundColor: 'green',
        },
    };
    ...
    <Button title="normal" {...theme}/>
    <Button title="clear" type="clear"/>
    <Button title="outline" type="outline"/>
  }
}
8
задан x4000 11 March 2009 в 19:52
поделиться

4 ответа

Я просто прошел боль изучения матричного преобразования, но использования XNA.

Я нашел они статьи кому: быть очень полезным в понимании, что происходит. Вызовы метода очень похожи в XNA, и теория позади всего этого должна относиться к Вам, даже с SlimDX.

От поглядывания на Ваш код я думаю, что необходимо переводить в запуске, к источнику, и затем переводить снова в конце к конечному положению, хотя я - все еще что-то вроде новичка в этом также.

Порядок я выполнил бы в нем:

  • Переведите в источник
  • Масштаб
  • Вращаться
  • Переведите в желаемое местоположение

Причина перевода на источник сначала состоит в том, что вращения базируются от источника. Поэтому для вращения чего-то об определенном моменте, место, которые указывают на источнике перед вращением.

12
ответ дан 5 December 2019 в 10:05
поделиться

Вы вращаетесь вокруг корректной оси? Я - новичок в матричном материале, но мне кажется, что, так как спрайт существует в x, y пространство, ось вращения должна быть осью Z - т.е. (0,0,1).

1
ответ дан 5 December 2019 в 10:05
поделиться

Хорошо, это теперь работает. Вот мой рабочий код для этого, в случае, если кому-то еще нужен он:

    Point sourceLoc = new Point ( 50, 50 );
    float length = 60;
    float thickness = 2;
    float angle = 0.5;
    Matrix m = Matrix.Scaling( length, thickness, 0 ) *
            Matrix.RotationZ( angle ) *
            Matrix.Translation( sourceLoc.X, sourceLoc.Y, 0 );
    sprite.Transform = m;

    sprite.Draw( this.tx, Vector3.Zero, Vector3.Zero, Color.Red );

Это проведет угловую линию Вашей выбранной длины с толщиной, равной Вашей выбранной толщине (предположение, что Ваша структура является белым изображением на 1x1 пиксель). Исходное местоположение - то, где строка испустит от, с любым углом Вы указываете (в радианах). Таким образом, если Вы запустите в нуле и инкременте чем-то как 0,1, пока Вы не совершите нападки 2PI, и затем сброс к 0, у Вас будет строка, которая вращается вокруг центра как радарная развертка или стрелка часов. Это - то, что я искал - благодаря всем, кто способствовал!

3
ответ дан 5 December 2019 в 10:05
поделиться

То, что необходимо сделать, делают каждое преобразование один шаг за один раз. Сделайте масштабирование сначала тянет его. Это, где Вы ожидаете это. Затем добавьте поворачивание и затем переведение. Это поможет раскрыть неправильные предположения.

Можно также потянуть во временных строках, чтобы помочь изобразить, где координаты. Например, если Вы делаете свое протяжение и вращение и ожидаете, что Ваша конечная точка будет в 0,0. Проведение другой линии с одной конечной точкой в 0,0 будет служить двойной проверкой, чтобы видеть если это действительно случай.

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

Общее решение состоит в том, чтобы двигаться обратно, строка к источнику делают любые операции, которые включают изменение, это формирует или ориентация. Позже, потому что Вы в известном хорошем местоположении, можно перевести в конечное место назначения.

ОТВЕТ НА КОММЕНТАРИИ

Если перевод будет проблемой, и Вы преобразовываете систему координат затем, то необходимо будет записать функцию преобразования для преобразования между старой системой и новым.

Например, если Вы поворачиваете 45 градусов. Перед вращением Вы могли перевести 0,1 для продвижения 1 дюйма. После вращения необходимо будет перевести примерно-.70707.070707 для продвижения 1 дюйма относительно системы исходной координаты.

1
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: