首页
学习
活动
专区
工具
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设置,数轴(坐标轴)可以拆解为线段+文本组合,可以通过svgline和text来画,需要注意是坐标原点位置以及y轴方向问题。...从数据到屏幕图形像素有一个数据变换过程,在输入值范围(值域)不确定情况,我们限定输出范围,这就是比例尺作用。 D3 提供了比例尺函数生成器。

3.7K20

使用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.4K30

    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 总结 该部分对几何变换平移和旋转进行了介绍,读者可根据提供资料对相关原理进行学习,然后参考示例代码自行实现。另外读者可以尝试学习并实现其他几何变换偏移。

    72740

    实验4 二维几何变换

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

    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必须成对出现。

    29210

    实验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.4K10

    终端图像处理系列 - 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.4K110

    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

    55350

    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.3K40

    彻底理解position与anchorPoint

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

    1.7K10

    实验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矩阵变换。...说了一大堆废话,可能大家不理解这种计算意义何在,其实这种边框计算有很多用途,例如脏区重绘、碰撞检测。

    74730

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

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

    76210

    OpenCV旋转矩形RotatedRectPoints函数遇到问题

    本文长度为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.5K20

    详解CALayeranchorPoint和position

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

    95130

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

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

    93210
    领券