首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在D3中将变换原点设置到此矩形的中间?

在D3中,要将变换原点设置到矩形的中间,你可以使用transform属性结合SVG的translate函数。translate函数接受两个参数,分别表示x轴和y轴的偏移量。

假设你已经创建了一个矩形,并且你知道它的宽度和高度,那么你可以通过以下步骤来设置变换原点:

  1. 计算矩形的中心点
    • 矩形的中心点x坐标 = 矩形左上角x坐标 + 矩形宽度 / 2
    • 矩形的中心点y坐标 = 矩形左上角y坐标 + 矩形高度 / 2
  • 应用变换
    • 使用translate函数将变换原点移动到矩形的中心点。

以下是一个完整的示例代码:

代码语言:txt
复制
// 假设矩形的宽度和高度分别为width和height
const width = 200;
const height = 100;

// 创建SVG容器
const svg = d3.select("body").append("svg")
    .attr("width", width + 20)
    .attr("height", height + 20);

// 创建矩形
const rect = svg.append("rect")
    .attr("x", 10)
    .attr("y", 10)
    .attr("width", width)
    .attr("height", height)
    .attr("fill", "blue");

// 计算矩形的中心点
const centerX = 10 + width / 2;
const centerY = 10 + height / 2;

// 将变换原点设置到矩形的中心点
rect.attr("transform", `translate(-${centerX}, -${centerY})`);

在这个示例中,我们首先创建了一个SVG容器和一个矩形。然后,我们计算矩形的中心点,并使用translate函数将变换原点移动到矩形的中心点。

参考链接

通过这种方式,你可以将变换原点设置到矩形的中间,从而实现更灵活的布局和动画效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《使用D3设计交互式图表》简读笔记|可视化系列31

可以总结下D3可视化的基本步骤如下: •创建新元素并绑定数据(html的元素可理解为划定区域和声明类型的闭合标签,如p表示其是一个段落,是段落就可以有段落文本、长宽、id等属性和标识)•设置相应元素的可视属性...,将数据值映射为元素大小、颜色、位置等可视属性;•对元素进行排列和变换,还有响应交互; D3那句链式调用了.select()、append()等,也可以用中间变量承接,写成: //拆成多个语句的写法:...和一些编程语言的坐标系统一样,基于像素的坐标系统的原点位于画布的左上角。增大 x 的值,图形会向右移动;增大 y 值,图形会向下移动。 ?...标题通过text来绘制,图形颜色等通过style设置,数轴(坐标轴)可以拆解为线段+文本的组合,可以通过svg的line和text来画,需要注意的是坐标原点的位置以及y轴方向的问题。...从数据到屏幕图形的像素有一个数据变换的过程,在输入值范围(值域)不确定的情况,我们限定输出的范围,这就是比例尺的作用。 D3 提供了比例尺函数生成器。

3.8K20

使用D3.JS进行坐标轴绘制和图绘制

前面已经说过D3的功能十分强大,但是往往实际使用时只需要用到一部分内容,在这里,就只用到了 比例尺 和 布局 两部分,外加 核心 的请求部分(请求数据),分别用来绘制Graph的显示坐标轴和图的顶点及边...绘制坐标轴 传统坐标轴 这里指的是 第一象限 的坐标轴,即两轴的坐标均为正数,坐标原点为(0,0) 具体可以看 这里,说的比较详细。...十字坐标轴 这里指的是 全象限 坐标轴,即两轴的坐标均从-∞开始,坐标原点为(0,0) 本质上,仍然是一般坐标轴的变形,主要原理有两点: 一是利用 比例尺 对源数据做符合中心坐标轴的变换; 二是创建坐标轴时利用...,包括原点 .orient('bottom') .tickFormat(formatPrecision); // 设置刻度格式 // 定义Y轴 var yAxis = d3.svg.axis....call(yAxis); 绘制图(circle+line) 关于图的绘制,本质上就是圆点和线的绘制,所以这也解释了为什么输入文件中的边数据也需要包含坐标的原因,因为在d3中绘制顶点和绘制边是互不相关的

6.5K30
  • flutter画布绘制图片和文字

    知道如何从图片中取出部分图片绘制到指定矩形域中。 [4]. 了解 Canvas 绘制图集的操作。 [5]. 如何在 Canvas 中绘制文字,并完善坐标系刻度。...dst 表示将抠出的图片填充到画布的哪个矩形域中,所以原点是画布原点。...center 表示从资源图片image上一块可缩放的矩形域,所以原点是图片的左上角。 dst 表示将抠出的图片填充到画布的哪个矩形域中,所以原点是画布原点。...ui.Image、变换列表List、矩形域列表 List 下面通过矩形域 Rect.fromLTWH(0, 325, 257, 166) 可以绘制出大图中的这张图片...= oldDelegate.image; } 【3】图形的变换 我们在定义 Sprite 时,可以将变换的属性放在其中,如平移、缩放、透明度等。

    2.6K30

    Task02 几何变换

    坐标系变换 再看第二个问题,变换中心,对于缩放、平移可以以图像坐标原点(图像左上角为原点)为中心变换,这不用坐标系变换,直接按照一般形式计算即可。...Image 在图像中我们的坐标系通常是AB和AC方向的,原点为A,而笛卡尔直角坐标系是DE和DF方向的,原点为D。...borderValue=0) # 如果要选择插值的方法可以通过参数flags设置,如flags=cv.INTER_CUBIC cv.imshow("img", img) cv.imshow("d1"..., d1) cv.imshow("d2", d2) cv.imshow("d3", d3) cv.waitKey() cv.destoryAllWindows() ?...2.6 总结 该部分对几何变换的平移和旋转进行了介绍,读者可根据提供的资料对相关原理进行学习,然后参考示例代码自行实现。另外读者可以尝试学习并实现其他几何变换,如偏移。

    74340

    实验4 二维几何变换

    1.实验目的: 巩固对二维几何变换的认识与理解; 学习OpenGL平移、旋转、缩放变换函数及其使用方法; 学习基本图形变换与复合图形变换的方法; 综合运用上述函数,设计复杂图形。...3.实验原理: (1)OpenGL下的几何变换 在OpenGL的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...由于模型和视图的变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。...通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。把当前矩阵设置为单位矩阵的函数为: glLoadIdentity(); 我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。...清屏 glMatrixMode(GL_MODELVIEW); //设置矩阵模式为模型变换模式,表示在世界坐标系下 glLoadIdentity(); //将当前矩阵设置为单位矩阵 glTranslatef

    1.1K20

    PDF标准详解(三)—— PDF坐标系统和坐标变换

    所以pdf中设置变换矩阵时忽略最后一列,仅仅保留前两列,采用6个数字 \begin{bmatrix}a & b & 0 \ c & d & 0 \ e & f & 1\end{bmatrix} 这个矩阵在...我们将一个长宽都为100 的矩形在 (200, 200) 位置逆时针旋转45° 绕任意点旋转,可以先将该点移动到坐标原点,然后按照坐标原点的进行旋转的公式进行计算,最后再将坐标点平移回原来的位置。...200 200 100 100 re S %原始矩形 0.7 0.7 -0.7 0.7 200 -80 cm%进行坐标变换 200 200 100 100 re S %变换后的矩形 endstream...100 re S %变换后的矩形 Q 400 400 100 100 re S % 这个矩形是相对于 (400, 400) 这个点旋转了45°的矩形 endstream % 流结束 endobj...没有任何的图形变换 PDF中将图形状态保存成一个栈结构,每次执行q就是将当前图形状态进行入栈,使用Q将之前保存在栈顶的图形状态进行出栈,并还原成当前图形状态。一般来说q/Q必须成对出现。

    54910

    实验5 OpenGL二维几何变换

    3.实验原理: (1) OpenGL下的几何变换 在OpenGL的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...向量v=(vx,vy,vz)的分量可以是任意的实数值,该向量用于定义通过坐标原点的旋转轴的方向,后缀为f(单精度浮点float)或d(双精度浮点double),对于二维旋转来说,vx=0.0,vy=0.0...sx,sy,sz指定这个缩放物体的矩阵,分别表示在x,y,z方向上的缩放比例,它们可以是任意的实数值,当缩放参数为负值时,该函数为反射矩阵,缩放相对于原点进行,后缀为f(单精度浮点float)或d(双精度浮点...由于模型和视图的变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。...通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。把当前矩阵设置为单位矩阵的函数为: glLoadIdentity(); 我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。

    2.5K11

    终端图像处理系列 - OpenGL ES 2.0 - 3D基础(矩阵投影)

    三维矩阵的相关知识是学习OpenGL最重要的课程之一。 线性代数 学习OpenGL三维投射知识之前,我们得事先了解下一些基础的线性代数知识,如向量运算,矩阵运算。...矩阵运算 矩阵简介 数学上,一个 m x n 的矩阵是一个m行n列元素排列成的矩形阵列。以下是一个由6个数字元素构成的3行3列的矩阵: ? 矩阵运算规则 矩阵的加减 矩阵与标量之间的加减: ?...通常情况下,我们会根据画布(屏幕)的大小设定一个坐标范围,在顶点着色器中将这些坐标转换为标准化设备坐标。...对我们来讲,一般情况下需要用到5个不同的坐标系统: 局部空间(Local Space):物体起始坐标;如一个正方体a,原点是正方体的中心O1(0,0,0)。...裁剪空间(Clip Space):顶点着色器运行到最后,OpenGL期望所有的坐标落在一个特定的范围内,且任何在这个范围之外的点会被裁剪掉。

    2.5K110

    OpenGL ES(三) 纹理

    self.baseEffect.useConstantColor = GL_TRUE; self.baseEffect.constantColor = GLKVector4Make(1.0f, 1.0f, 1.0f, 1.0f);// 设置三角形颜色...(注:如果开启光照,这里的颜色将会失效) // 顶点数据(前3列是顶点数据,一共6个顶点构成一个矩形,后2列是纹理坐标,这里需要注意纹理坐标原点和OpenGL ES的绘图坐标的原点是不一样的...// OpenGL ES的绘图坐标的原点在屏幕中间 // 纹理坐标分为两种情况:在使用GLKit时,纹理坐标在右上角;使用shader绘图时,原点在左下角) GLfloat vertexs[...(OpenGL坐标中,以屏幕中间为原点,向右到屏幕边缘为x轴的0~1,向上为y轴的0~1,向屏幕外为z轴的正方向 // 由于我们的设备是高大于宽的,所有y轴0.5大于x轴0.5,所以上面的顶点数据的输出是一个长方形...,但是我们的期望是输出一个正方形,下面的变换就是为了解决这个问题) float aspect = fabs(self.view.bounds.size.width / self.view.bounds.size.height

    57150

    D3常用API说明,含代码示例

    d3中设置和获取选择集属性的API函数共有六个: selection.attr( name[, value] ):设置或获取选择集元素的属性,name是属性名,value是属性值,如果省略value,...如果数组的有效长度为奇数,则中间值为数组经递增排序后位于正中间的值;如果数组的有效长度为偶数,则中间值为经递增排序后位于正中间的两个数的平均值。...代码示例如下: import * as d3 from "d3"; // 定义表示每个柱状矩形长短的数组 // 数组长度表示柱状矩形的个数,数组项值表示柱状矩形的高度...由于文本设置的x、y、dx、dy这几个属性,所以按坐标轴原点来理解,(x+dx, y+dy)就是文字的起始位置,start值表示文字的第一个字符位于起始位置的右方;middle值表示文字的中心位于起始位置...from "d3"; // 定义表示每个柱状矩形长短的数组 // 数组长度表示柱状矩形的个数,数组项值表示柱状矩形的高度,单位为px let dataset = [ 50, 43, 120, 87,

    4.4K40

    彻底理解position与anchorPoint

    我们要解释的anchorPoint就相当于白纸上的图钉,它主要的作用就是用来作为变换的支点,旋转就是一种变换,类似的还有平移、缩放。...继续扩展,很明显,白纸的旋转形态随图钉的位置不同而不同,图钉订在白纸的正中间与左上角时分别造就了两种旋转形态,这是由图钉(anchorPoint)的位置决定的。...图2 像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说到的白纸和图中的矩形可以理解为layer,书桌和图中矩形以外的坐标系可以理解成...如果各自以左上角为原点,则在图中有相对的两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形的中心点与原点。...图2中是矩形沿不同的anchorPoint点旋转的形态,这就是类似于刚才讲的图钉订在白纸的正中间与左上角时分别造就了两种旋转形态。

    1.8K10

    实验3 OpenGL几何变换

    的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。...(投影变换) 4、我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是全部(指定在显示器窗口的那个位置显示)。(视口变换) 这些,都可以在OpenGL中实现。...由于模型和视图的变换都通过矩阵运算来实现,在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”。...通常,我们需要在进行变换前把当前矩阵设置为单位矩阵。把当前矩阵设置为单位矩阵的函数为: glLoadIdentity(); 我们在进行矩阵操作时,有可能需要先保存某个矩阵,过一段时间再恢复它。...通常,用这种先保存后恢复的措施,比先变换再逆变换要更方便,更快速。 注意:模型视图矩阵和投影矩阵都有相应的堆栈。使用glMatrixMode来指定当前操作的究竟是模型视图矩阵还是投影矩阵。

    1.2K20

    【HTML5 Canvas】计算元件显示对象经过Matrix变换后在上级舞台上的bounds(边界矩形rect)

    如上图所示,这样的一个简单矩形,边界矩形是(x:-28, y:-35, width:152, height:128),这是在这个元件/显示对象自己的坐标空间的范围。...那么把这个放到父元件(舞台)中,再做一定变换。如下图所示,白色区域就是舞台,蓝色矩形中的白色十字架标记,就是世界坐标的(0,0)点。...蓝色矩形的原点和世界坐标的原点对应,也就是说蓝色矩阵的坐标为(0,0)。 在舞台这个世界坐标系中,边界区域又是什么呢?我们的目标就是计算下图中的红色区域。...矩形旋转了-60度,其实这个变换,可以具体转化为一个Matrix矩阵变换。...说了一大堆废话,可能大家不理解这种计算意义何在,其实这种边框计算有很多用途,例如脏区重绘、碰撞检测。

    76930

    从零开始深度学习(十五):正则化

    L1 正则化策略使权重更接近原点,容易得到稀疏解(0比较多)。 L2 策略使权重更接近原点,得到的解比较平滑(不是稀疏)。...这就是在逻辑回归函数中实现 正则化的过程,那么如何在神经网络中实现 正则化呢?...),但是 会存在一个中间值,于是会有一个接近 Just Right 的中间状态。...接下来要做的就是从第三层中获取激活函数,这里叫它 , 等于上面的 乘以 ,即 a3 =np.multiply(a3,d3)(这里是元素相乘,也可写为 a3 *=d3)。...常用的 数据增强 方法有: 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向; 翻转变换(flip): 沿着水平或者垂直方向翻转图像; 缩放变换

    78110

    OpenCV旋转矩形RotatedRect的Points函数遇到的问题

    本文长度为2722字,预计阅读8分钟 前言 原来的文章《C++ OpenCV透视变换改进---直线拟合的应用》,通过RotatedRect旋转矩形获取到透视变换的4个点,再进行透视变换。...首先保证代码没有修改过,中间OpenCV应该是升级过4.5.1的版本,由于没留以前的版本源码,所以不好分析是不是这个函数改过。那这里就不考虑源码的事了,直接分析下遇到的情况及怎么解决。 原因分析 ?...Opencv采用通用的图像坐标系,左上角为原点O(0,0),X轴向右递增,Y轴向下递增,单位为像素。 矩形4个顶点位置的确定,是理解其它各变量的基础,其中p[0]点是关键。...顶点p[0]的位置可以这样理解: 如果没有对边与Y轴平行,则Y坐标最大的点为p[0]点,如矩形(2)(3)(4); 如果有对边与Y轴平行,则有两个Y坐标最大的点。此时,左侧的点为p[0]点。...如矩形(1)。

    2.8K20

    WPF 使用 TranslatePoint 换算元素之间相对坐标

    而每个矩形都可以将自己的左上角作为原点建立坐标,不同的矩形之间的坐标原点不相同,当这些用矩形表达的元素进行系列的旋转和平移等之后,如何将以某个元素的矩形左上角为原点的坐标换算为另一个元素的矩形左上角为原点的坐标...只要在相同的视觉树上面,所有的元素的矩形范围都能通过矩阵计算换算出来,在 WPF 和 UWP 里面都在每个元素提供了 TranslatePoint 方法,这个方法的作用就是用当前元素的左上角为原点的坐标换算为这个点在传入的元素的坐标...,或者说将传入的点相对于视觉树最顶层的坐标不变的前提下,计算出如果放在传入元素里面应该的坐标是多少 如我有一个 Canvas 和 Canvas 里面有一个矩形,我对矩形做了一些复杂的变换,包括设置他的...其实这个问题可以转换为求在矩形坐标中,点(0,0)在 Canvas 上的值是多少 因为求一个元素相对于另一个的元素的坐标,也就是求元素左上角所在另一个元素的坐标,而一个元素的左上角就是通过以元素的左上角为原点的坐标也就是点...其实小伙伴可以尝试画两个矩形,在其中一个矩形里面点一个点,然后求这个点在使用另一个矩形的左上角作为原点时的坐标,这是一道特别简单的初中数学 ? 本文代码放在github欢迎小伙伴访问 ----

    1K10

    详解CALayer的anchorPoint和position

    CALayer具备以下UIView没有的功能: 阴影, 圆角, 边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 布局 要分析CALayer的anchorPoint和position属性,首先要讨论一下...我们要解释的anchorPoint就相当于白纸上的图钉,它主要的作用就是用来作为变换的支点,旋转就是一种变换,类似的还有平移、缩放。...如果各自以左上角为原点,则在图中有相对的两个坐标空间。 position 在图1中,anchorPoint有(0.5,0.5)和(0,0)两种情况,分别为矩形的中心点与原点。...图2中是矩形沿不同的anchorPoint点旋转的形态,这就是类似于刚才讲的图钉订在白纸的正中间与左上角时分别造就了两种旋转形态。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.1K30
    领券