首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

小聊聊NGUIPanelClip功能(之一)

NGUIPanel具有裁剪功能,操作上便是设置一个Panel类型即可~ image.png   原理上,该裁剪功能是基于Shader来实现,简单列一下相关着色器代码: v2f vert...(也就是原Shader_ClipArgs0),同样我们也暂时不管其中index索引,其是NGUI用于实现多层Panel嵌套裁剪用,此篇文章我们不予讨论,但就ClipRange来看,其会被设置成...,就是将点坐标转换到Panel局部坐标系下,并执行一个“归一化”操作,操作上就是首先执行一个位移操作,然后依据Panel大小执行一个缩放,即:   假设顶点坐标为 vx, vy, Panel中心位置为...和cr.w即是Panel区域大小一半(即之前pw’和ph’),而所谓soft,则是Panel所支持soft clip功能,效果上就是裁剪控件边缘可以根据soft大小渐隐显示,而不是显示成硬边~...设置SoftPanel裁剪效果: image.png   未设置SoftPanel裁剪效果: image.png 假设顶点(以Panel坐标系下定义,此时Panel中心位置即为(0,0

1.2K20

小聊聊NGUIPanelClip功能(之二)

上篇简单聊了一下NGUIPanel裁剪实现原理,总结来看其实比较简单,就是通过Shader计算fragment关于Panel裁剪区域相对位置,然后通过调整alpha值来实现裁剪效果~   那么依样画瓢...答案是否定,原因在于粒子顶点数据并不和Panel在同一坐标系下(而关于为何NGUI元素顶点数据和Panel是在同一个坐标系问题,有兴趣朋友可以细看看UIDrawCall.cs),而不同坐标系下数据进行相互操作...,为了实现粒子在NGUI Panel裁剪,我们仅需要以Viewport坐标系为桥梁,同样利用Shader来判断粒子顶点是否在Panel裁剪范围之内,并仍然通过调整alpha值来实现真正裁剪效果~...坐标转至Viewport坐标系下,所以留心一下那两句WorldToViewportPoint即可~   接着,便是使用Shader来判断粒子顶点是否在Panel裁剪范围之下了,由于Panel裁剪范围已经变换至...分量除以w分量,可以将顶点变换至NormalizedDeviceCoordinates(NDC)空间,该空间下,xy取值范围为[-1, 1],据此我们重新将其映射至[0, 1]范围(即Viewport

1.1K20

Pandas对象

安装并使用PandasPandas对象简介PandasSeries对象Series是广义Numpy数组Series是特殊字典创建Series对象PandasDataFrame对象DataFrame...是广义Numpy数组DataFrame是特殊字典创建DataFrame对象PandasIndex对象将Index看作不可变数组将Index看作有序集合 安装并使用Pandas import numpy...as np # 检查pandas版本号 import pandas as pd pd....Pandas对象简介 如果从底层视角观察Pandas,可以把它们看成增强版Numpy结构化数组,行列都不再是简单整数索引,还可以带上标签。...先来看看Pandas三个基本数据结构: Series DataFrame Index PandasSeries对象 PandasSeries对象是一个带索引数据构成一维数组,可以用一个数组创建Series

2.6K30

Pandas数据分类

--MORE--> 背景:统计重复值 在一个Series数据中经常会出现重复值,我们需要提取这些不同值并且分别计算它们频数: import numpy as np import pandas as...0 语文 1 数学 1 数学 0 语文 0 语文 1 数学 1 数学 0 语文 dtype: object type(df1) # Series数据 pandas.core.series.Series...cat.values s ['语文', '数学', '语文', '语文', '语文', '数学', '语文', '语文'] Categories (2, object): ['数学', '语文'] type(s) pandas.core.arrays.categorical.Categorical...Categorical对象 通过pandas.Categorical来生成 通过构造函数from_codes,前提是你必须先获得分类编码数据 # 方式1 df2["subject"] = df2[...不同类别都是它一列,看下面的例子: data4 = pd.Series(["col1","col2","col3","col4"] \* 2, dtype="category") data4 0

8.6K20

掌握pandastransform

pandas,transform是一类非常实用方法,通过它我们可以很方便地将某个或某些函数处理过程(非聚合)作用在传入数据每一列上,从而返回与输入数据形状一致运算结果。...本文就将带大家掌握pandas关于transform一些常用使用方式。...图1 2 pandastransform 在pandastransform根据作用对象和场景不同,主要可分为以下几种: 2.1 transform作用于Series 当transform作用于单列...agg机制,会生成MultiIndex格式字段名: ( penguins .loc[:, 'bill_length_mm': 'body_mass_g'] .transform...版本之后为transform引入了新特性,可以配合Cython或Numba来实现更高性能数据变换操作,详细可以阅读( https://github.com/pandas-dev/pandas/pull

1.5K20

pandasloc和iloc_pandas loc函数

大家好,又见面了,我是你们朋友全栈君。...目录 pandas索引使用 .loc 使用 .iloc使用 .ix使用 ---- pandas索引使用 定义一个pandasDataFrame对像 import pandas as pd....loc[],括号里面是先行后列,以逗号分割,行和列分别是行标签和列标签,比如我要得到数字5,那么就就是: data.loc["b","B"] 因为行标签为b,列标签为B,同理,那么4就是data...5,右下角值是9,那么这个矩形区域值就是这两个坐标之间,也就是对应5行标签到9行标签,5列标签到9列标签,行列标签之间用逗号隔开,行标签与行标签之间,列标签与列标签之间用冒号隔开,记住,.loc...那么,我们会想,那我们只知道要第几行,第几列数据呢,这该怎么办,刚好,.iloc就是干这个事 .iloc使用 .iloc[]与loc一样,括号里面也是先行后列,行列标签用逗号分割,与loc不同之处是

1.2K10

Pandas10种索引

作者:Peter 编辑:Peter 大家好,我是Peter~ 今天给大家一片关于Pandas基本文章:9种你必须掌握Pandas索引。...索引在我们日常生活其实是很常见,就像: 一本书有自己目录和具体章节,当我们想找某个知识点,翻到对应章节即可; 也像图书馆书籍被分类成文史类、技术类、小说类等,再加上书籍编号,很快就能够找到我们想要书籍...在Pandas创建合适索引则能够方便我们数据处理工作。 [e6c9d24ely1h0dalinfwhj20lu08e3yq.jpg] <!...pd.Index Index是Pandas常见索引函数,通过它能够构建各种类型索引,其语法为: [e6c9d24ely1h0gmuv2wmmj20x60detah.jpg] pandas.Index...版本,上面3个函数全部统一成了pd.NumericIndex方法。

3.5K00

pandas窗口处理函数

滑动窗口处理方式在实际数据分析中比较常用,在生物信息,很多算法也是通过滑动窗口来实现,比如经典质控软件Trimmomatic, 从序列5'端第一个碱基开始,计算每个滑动窗口内碱基质量平均值...在pandas,提供了一系列按照窗口来处理序列函数。....count() 0 1.0 1 2.0 2 2.0 3 1.0 4 1.0 dtype: float64 window参数指定窗口大小,在rolling系列函数,窗口计算规则并不是常规向后延伸...以上述代码为例,count函数用于计算每个窗口内非NaN值个数,对于第一个元素1,再往前就是下标-1了,序列不存在这个元素,所以该窗口内有效数值就是1。....apply(lambda x:np.nanmean(x)) 0 NaN 1 1.5 2 2.5 3 NaN 4 NaN dtype: float64 与固定窗口相对应,pandas

2K10

(六)Python:PandasDataFrame

admin  2 3  admin  3 另一种删除方法     name  a 1  admin  1 3  admin  3 (1)添加列         添加列可直接赋值,例如给 aDF 添加...tax 列方法如下: import pandas as pd import numpy as np data = np.array([('xiaoming', 4000), ('xiaohong'...,但这种方式是直接对原始数据操作,不是很安全,pandas 可利用 drop()方法删除指定轴上数据,drop()方法返回一个新对象,不会直接修改原始数据。...,可以改变原来数据,代码如下: import pandas as pd import numpy as np data = np.array([('xiaoming', 4000), ('xiaohong...,在此不一一列举,有兴趣同学可以自己去找一下 统计功能  DataFrame对象成员找最低工资和高工资人群信息          DataFrame有非常强大统计功能,它有大量函数可以使用,具体代码如下所示

3.8K20
领券