标签: transform

如何围绕特定点来回旋转对象?

我正在使用Raphael JS试图围绕低于其中心点的点旋转图像形状.如何才能做到这一点?

我尝试了以下但它不起作用.

var playBBox = playButtonRef.getBBox();
var xPos = playBBox.x + playBBox.width/2;
var yPos = playBBox.y;
var animObject = Raphael.animation({
    transform: playButtonRef.attr("transform") + "R60," + (this.cx - 25) + "," + this.cy
}, 3000);?
animObject = animObject.repeat(10); 
playButtonRef.animate(animObject);
Run Code Online (Sandbox Code Playgroud)

我也在寻找一种方法将它旋转回原来的位置.如何让它追溯它的路径?

javascript animation transform raphael

5
推荐指数
1
解决办法
2520
查看次数

如何修复悬停时 CSS 变换添加的白线?

有人找到或知道针对悬停时使用 CSS 缩放进行转换的元素上出现的白线/边框的有效修复吗?

我尝试过以下方法:transform: translateZ(0)-webkit-backface-visibility: hidden、 ,transform-style: preserve-3d但没有任何帮助。

在非视网膜显示器上可以清楚地看到这个错误。

这是为那些看不到该错误的人提供的视频,您会注意到图像底部有一条类似 1px 的线。

section {
  padding: 100px 0;
}

figure {
  margin: 0;
  overflow: hidden;
}

figure:before {
  position: absolute;
  z-index: 2;
  content: '';
  width: 100%;
  height: 100%;
  background: rgba(43, 43, 54, 0.3);
  transition: background 0.7s cubic-bezier(0.2, 1, 0.2, 1);
}

.ct-image-container {
  display: flex;
  position: relative;
  transform: scale3d(1, 1, 1);
  transition: transform 0.7s cubic-bezier(0.2, 1, 0.2, 1);
}

.ct-image-container img {
  position: …
Run Code Online (Sandbox Code Playgroud)

css transform line scale hover

5
推荐指数
1
解决办法
2335
查看次数

CSS:混合混合模式使转换不再起作用(Chrome,Firefox)

似乎mix-blend-mode: multiply让任何transform不再工作。这种情况发生在 Chrome 和 Firefox 中,而在 Safari 中却可以。(全部更新到最新版本)

在此小提琴中,您可以看到行为:小提琴 (抱歉,如果有点混乱,我不是开发人员)

第一张图片没有multiply班级,第二张图片有班级。

.inner {
  -webkit-transform: translateZ(30px);
  transform: translateZ(30px);
}

.innerUp {
  -webkit-transform: translateZ(100px);
  transform: translateZ(100px);
}

.multiply {
  mix-blend-mode: multiply;
}
Run Code Online (Sandbox Code Playgroud)

我发现了一些关于此的讨论,但没有一个能够解决这个问题。

谢谢!

css firefox google-chrome transform mix-blend-mode

5
推荐指数
0
解决办法
374
查看次数

在处理中旋转、反转和平移 PShape 对象

我想:

  • 多次平移反转旋转单个四边形(PShape 对象)
  • 然后更改其两个顶部顶点之一的高度

因此整个东西就像一个铰接臂,可以 向右或向左弯曲。

为了尽可能清晰,我制作了一些图表。

在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述

我知道我可以:

  • 使用平移四边形translate()
  • 翻转(反转)它scale(1, -1)
  • 使用atan2()函数旋转它

在此输入图像描述

问题

当将这 3 个结合在一起时,我得到了这样的结果:

https://media.giphy.com/media/lkACPOxBLOhtk20gzD/giphy.gif

旋转角度似乎是正确的,但显然平移有问题(无论是在 X 轴还是 Y 轴上),我无法弄清楚到底是什么。

我怀疑枢轴翻译缺失,或者转换顺序不正确(或者两者都有)。

如果有人能帮助我理解我做错了什么以及如何解决这个问题,我将非常感激。

int W = 40;
int H = 40;
int offset = 10; 

float[] p0 = {-W/2, -H/2};
float[] p1 = {-W/2,  H/2};
float[] p2 = {W/2, H/2};
float[] p3 = {W/2, -H/2 - offset};

PShape object;


void setup(){
    size(600, 600, P2D);
    smooth(8); …
Run Code Online (Sandbox Code Playgroud)

processing geometry transform rotation

5
推荐指数
1
解决办法
468
查看次数

SVG 多重变换 - 旋转然后水平平移

使用 SVG,我尝试将其旋转 30 度,然后水平平移 100 度。问题是,当我旋转坐标系时,它会旋转,因此当我尝试平移时,我将沿着旋转的 x 平移对象- 轴现在与水平面成 30 度。

有什么办法可以让旋转后水平平移吗?

<g transform="rotate(30 50 50) translate(100 0)">
   <rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
Run Code Online (Sandbox Code Playgroud)

我想创建用于旋转和平移上、下、左、右的控制按钮。这些将创建一个字符串,该字符串将使用数据绑定到 svg 的转换属性,从而按顺序转换对象。但平移需要相对于视口,而不是对象的旋转方式。

我使用 vue.js 框架进行数据绑定。

我也不想使用css。

谢谢,

svg transform rotation translate

5
推荐指数
1
解决办法
2540
查看次数

如何将字母放置在子图的角落,包括轴标签(不是轴的角落)

我想用左上角的字母(A,B,C,...)来标记子图,这些字母要么与 ylabels 对齐,要么与子图的实际角(而不是轴)对齐。

如果子图的宽度不同,我不能再使用轴变换坐标中带有偏移的文本,因为这会导致每个子图的距离不同。所以我通常使用偏移变换。但如果 ylabel 具有不同的宽度,这将不再起作用。我目前还关注每个图的偏移量,但这还不够好。

这是我到目前为止所拥有的:

import matplotlib.pyplot as plt
from matplotlib import transforms
import numpy as np

fig = plt.figure(figsize=(5, 2), constrained_layout=True)
gs = fig.add_gridspec(1, 3, width_ratios=[1, 2, 3])
axes = [fig.add_subplot(gs[i]) for i in range(3)]

ylabels = ["flat label", "bigger\nlabel", "even\nbigger\nlabel"]
labels = ["A", "B", "C"]

scaledtrans = transforms.ScaledTranslation(-0.4, 0, fig.dpi_scale_trans)

for ax, ylabel, label in zip(axes, ylabels, labels):
    ax.set_ylabel(ylabel)
    ax.text(0, 1, label, fontsize=12, fontweight="bold", va="bottom", ha="left",
           transform=ax.transAxes + scaledtrans)
Run Code Online (Sandbox Code Playgroud)

如下图所示,标签与轴脊的距离相同,但我希望它们与 ylabel 的左边缘或子图的角对齐,在这种情况下,它们与 ylabel 水平重合。但没有 transSubplot,只有 transAxes …

python text transform matplotlib subplot

5
推荐指数
1
解决办法
2690
查看次数

ARKit 的相机空间朝向是什么?

我想更好地理解 ARKit 的 ARCamera 变换所在的相机坐标空间。在文档中,它说

\n\n
\n

此变换为相机创建一个相对于设备方向恒定的局部坐标空间。在相机空间中,当设备处于UIDeviceOrientation.landscapeRightorientation \xe2\x80\x94 时, x 轴指向右侧,即 x 轴始终沿着设备的长轴指向,从前置摄像头朝向主页按钮。y 轴指向上方(相对于 UIDeviceOrientation.landscapeRight 方向),z 轴指向远离屏幕一侧的设备。

\n
\n\n

接下来,UIDeviceOrientation.landscapeRight 文档说:

\n\n
\n

设备处于横向模式,设备直立且主页按钮位于左侧。

\n
\n\n

当我试图理解这一点时,似乎"the x-axis points to the right when the device is in UIDeviceOrientation.landscapeRight orientation"和之间存在冲突"that is, the x-axis always points along the long axis of the device, from the front-facing camera toward the Home button"。前者向右有+x,后者向左有+x。

\n\n

这是我的想象"the x-axis points to the right when the device …

transform augmented-reality ios swift arkit

5
推荐指数
2
解决办法
2761
查看次数

如何使用变换对高度和宽度进行动画处理?

我正在尝试构建一个搜索栏,如果您将鼠标悬停在搜索图标上,它应该会展开。但直接对宽度进行动画处理并不高效,因此我决定使用变换,但它无法正确缩放搜索栏。这是屏幕截图。

使用正常宽度 图像时

使用变换 图像时

CSS代码:

.searchBox {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 8px;
}

.search-content {
  font-size: 10px;
}

.search-input {
  width: 0px;
  background-color: transparent;
  padding: 0.5rem;
  padding-right: 2rem;
  border-radius: 2rem;
  border: none;
  outline: none;
  transition: 0.2s;
}

.searchBox:hover > .search-input {
  /* width: 8rem; */
  transition: scaleX(8rem);
  padding: 0.5rem;
  padding-right: 2rem; 
  background-color: rgb(240, 245, 248);
  box-shadow: 0px 0.25rem 0.25rem 0px rgba(0, 0, 0, 0.2);
}

.searchSvg {
  position: absolute;
  right: 0.62rem;
  transition: 0.3s;
  display: …
Run Code Online (Sandbox Code Playgroud)

css transform reactjs

5
推荐指数
1
解决办法
461
查看次数

变换和偏移动画(颤动)后,GestureDetector 不起作用

我想创建一个旋转动画,其中包含一组按钮(排列成圆圈),这些按钮从单击的中心按钮旋转和延伸。

虽然动画和旋转工作良好,并且打开按钮和关闭按钮工作顺利并且尽管旋转但仍响应 onTap(),但外部按钮在“onTap”-GestureDetector 方面不起作用。

目标:我想让红色容器可点击(例如GestureDetector)。问题:红色容器对 onTap() 没有反应。

import "dart:developer" as dev;
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:sdg3/Widget/rotation_controller.dart';
import 'package:sdg3/Widget/rotation_menu_button.dart';
import 'package:vector_math/vector_math.dart' show radians, Vector3;

class RadialMenu extends StatefulWidget {
  final Widget open;
  final Widget? close;
  final int startAngle;
  final List<RotationMenuButton> rotationButtons;
  final RotationController? rotationController;

  const RadialMenu({
    Key? key,
    this.rotationController,
    required this.open,
    this.startAngle = 0,
    this.close,
    required this.rotationButtons,
  }) : super(key: key);

  @override
  createState() => _RadialMenuState();
}

class _RadialMenuState extends State<RadialMenu>
    with SingleTickerProviderStateMixin {
  late AnimationController controller;
  late double maxButtonRadius;

  @override …
Run Code Online (Sandbox Code Playgroud)

transform hittest gesturedetector flutter

5
推荐指数
1
解决办法
1513
查看次数

有没有办法在应用 css 变换矩阵之前计算元素的结束位置?

transform: matrix()我需要在应用css 转换之前计算出元素的结束边界矩形。我不知道从哪里开始,也找不到任何解决这个问题的好文章。

因此,假设您拥有元素的原始位置,getBoundingClientRect()如果您拥有应该应用的矩阵,是否有可靠的方法来找到结束位置。

我已经构建了一个滚动控制器,我正在尝试在屏幕上映射元素进度,但我需要元素的开始和结束位置。因此,我需要应用 css 转换后元素的位置来确定元素何时离开屏幕。现在我只是应用矩阵然后getBoundingClientRect()再次运行。但这似乎有点老套。

因此,假设您有原始矩阵和结束矩阵。getBoundingClientRect()然后在元素上运行来找到它的位置。有没有数学方法来计算新的边界矩形?

因此,对于本示例,我们将仅使用 6 值矩阵。但如果将它应用到完整的 16 值矩阵也会很好:

const boundingRect = element.getBoundingClientRect();
const startingMatrix = [1, 0, 0, 1, 0, 0];
const endingMatrix = [2, 1, -1, 2, 200, 400];

// Now calculate the new bounding rect of element after ending matrix is applied.
Run Code Online (Sandbox Code Playgroud)

我根据下面的评论推荐的这篇文章https://dev.opera.com/articles/understanding-the-css-transforms-matrix/尝试了以下操作。我显然缺少或不明白一些东西。这是我的尝试:

const boundingRect = element.getBoundingClientRect();
const startingMatrix = [1, 0, 0, 1, 0, 0];
const endingMatrix = [2, 1, -1, 2, 200, …
Run Code Online (Sandbox Code Playgroud)

javascript css algorithm transform matrix

5
推荐指数
1
解决办法
971
查看次数