精华内容
参与话题
问答
  • 这是一份整理好的Cube学习笔记,一共有16个例程,基本涵盖了STM32的所有开发例程,可以供大家快速上手Cube
  • 前言 在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯 面向初学者 如果您想着快速实现工程的创建,...

    前言

    在配置好CubeMX之后,就是新建工程的开始了,那么首先我们需要一些准备,本片博客我们会很详细的介绍STM32CubeMx的基本使用和如何创建一个新的工程并且点亮LED灯  面向初学者   如果您想着快速实现工程的创建,可以直接跳过功能介绍,观看工程创建一栏 

    并且,在新建工程时,我们分为了具体流程1~7 如果您不想看每部分的讲解,直接按照流程操作即可,5分钟即可成功点亮LED灯

    安装STM32CubeMx请参看《STM32 CubeMx使用教程一--安装教程》

    前期准备:

    1、STM32硬件(我的是STM32F407ZE和STM32F103ZE)

    2、STM32CubeMx软件、 IDE   Keil(MDK-ARM)软件

    3、STM32F4xxHAL库   

    新建工程

    1在主界面选择File-->New Project   或者直接点击ACCEE TO MCU SELECTOR   

     

    出现芯片型号选择  一般我们直接搜索自己芯片的型号即可   

     如果你是设计产品想要选择一款芯片  在搜索栏的下面,提供的各种查找方式,可以选择芯片内核,型号,等等,帮助你找到适合的芯片

    具体流程1:

    • 1 搜索芯片型号
    • 2选择芯片
    • 3创建工程

    那么接下来就是我们整个流程的重头戏了

    这里我们分成三大块来讲解

    1MCU外设资源选择

    在这里可以选择MCU的各种资源和外设

    提供两种方式

    • Categories  种类选择

    将MCU的各种外设和资源分类,供用户选择使用

    • A-Z  顺序选择

    MCU的外设资源按A-Z 排序,供用户选择使用

    2外设配置

    这里可以设置你所选择外设的各种功能

    这里以串口1为例   我们可以选择串口的模式(异步,同步,半双工)   串口接收中断,和串口DMA传输等等

    和我们配置库函数的时候基本一样,但是  STM32CubeMx将这些转换为了图形和选项  ,我们配置的时候不用再去配置各种东西,只需要傻瓜式操作便可以配置我们需要的外设   这便是CubeMx的核心所在

    3预览界面

    这里分为引脚预览系统预览

    引脚预览就是可以查看那个引脚配置了什么功能,和各个引脚位置  

     

    随便点击一个引脚,即可设置该引脚的各种功能

     

          这种颜色表示不可配置引脚  电源专用引脚以黄色突出显示。其配置不能更改

    这种颜色表示你配置了一个I/O口的功能,但是没有初始化相对应的外设功能  引脚处于no mode 状态  

     

      绿色表示配置成功

     

    系统预览

    系统预览就是查看配置的各种外设和GPIO的状态 

    表示没有问题

    表示警告,对应配置出现问题  点击该选项即可外设配置界面查看

     

    具体各个功能的配置(UATR/DMA/ADC/TIM...)我们再接下来的文章会一一讲解,这里就不再过多介绍了

    具体流程2:

    这里只需要把我们的LED对应引脚设置为GPIO_Output即可

    2时钟源设置

    其实也就是32的时钟树框图让你配置  默认时钟是使用内部RC振荡器(HSI) 

    如果不懂的话请看《【STM32】系统时钟RCC详解(超详细,超全面)》

    具体流程3:

    或者先按照图中方式配置为72MHz即可

     

    •  需要配置RCC才能够使用外部时钟源

    3.工程管理

    设置完MCU的各个配置之后,第三个就是工程文件的设置了

    具体流程4:

    这里就是工程的各种配置 我们只用到有限几个,其他的默认即可  IDE我们使用的是 MDK5

    • 存储目录不可以有中文

    然后点击Code Generator,进行进一步配置   (重点)

    将HAL库的所有.C和.H都复制到所建工程中 

    优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便

    缺点: 体积大,编译时间长(很长)

    只复制所需要的.C和.H   (推荐)

    优点:体积相对小,编译时间短,并且工程可复制拷贝

    缺点: 新增外设时需要重新用STM32CubeMX导入   

    不复制文件,直接从软件包存放位置导入.C和.H 

    优点:体积小,比较节约硬盘空间

    缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径   

    自行选择方式即可

    具体流程5:

    然后点击GENERATE CODE  创建工程

    创建成功,打开工程

    具体流程6:while循环添加下面两行代码即可

        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_15);

    配置下载工具

    具体流程7:

    新建的工程所有配置都是默认的  我们需要自行选择下载模式,勾选上下载后复位运行

    所有自己编写的代码请放在/* USER CODE BEGIN XXX */   /* USER CODE END XXX */之间 

     这样我们修改工程的时候你自己写的代码就不会被删除

     

    到此,STM32CubeMX的基本使用介绍完了 ,接下来会更新CubeMX和HAL库配置STM32的UART ADC DMA 定时器 PWM 等等 

    展开全文
  • 本季课程主要讲解STM32的全新开发方式:使用STM32CubeMX工具做图形化配置,自动生成初始化代码;添加各种中间件;使用HAL库和LL库来操作外设。结合朱老师物联网大讲堂专为nbiot物联网开发而设计的NB476开发板,本季...
  • 数据立方体(Data Cube

    千次阅读 2019-03-18 10:25:35
    基本概念 先给出一个数据立方体的直观感受,如下图所示 数据立方体是一种多维数据模型,下面介绍一下多维模型的相关概念: • 多维数据模型:为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于...

    基本概念

    先给出一个数据立方体的直观感受,如下图所示


    在这里插入图片描述

    数据立方体是一种多维数据模型,下面介绍一下多维模型的相关概念:
    • 多维数据模型:为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型,其基本的应用是为了实现OLAP(Online Analytical Processing)
    • 立方体:它是由维度构建出来的多维空间,包含了所要分析的基础数据,所有的聚合数据操作都在它上面进行
    • 维度:观察数据的一种角度,比如在上图中address、item、time都可以被看作一个维度,直观上来看维度是一个立方体的轴,比如三个维度可以构成一个立方体的空间
    • 维度成员:构成维度的基本单位,比如对于time维,包含Q1、Q2、Q3、Q4四个维度成员
    • 层次:维度的层次结构,它存在两种:自然层次和用户自定义层次。比如对于时间维,可以分为年、月、日三个层次,也可以分为年、季度、月三个层次。一个维可以有多个层次,它是单位数据聚集的一种路径
    • 级别:级别组成层次,比如年、月、日分别是时间维的三个级别
    • 度量:一个数值函数,可以对数据立方体空间中的每个点求值;度量值自然就是度量的结果
    • 事实表:存放度量值得表,同时存放了维表得外键,所有分析所用得数据最终都来自事实表
    • 维表:对于维度的描述,每个维度对应一个或多个维表,一个维度对应一个表的是星型模式,对应多个表的是雪花模式


    在这里插入图片描述

    一个n维的数据的立方体称为基本方体。给定一个维的集合,可以构造一个方体的格,每个都在不同的汇总级或不同的数据子集显示数据,方体的格称为数据立方体。0维方体存放最高层的汇总,称为顶点方体;存放在最底层汇总的方体称为基本方体。

    数据立方体(Data Cube)

    数据立方体只是多维模型的一种形象的说法,它只有三维,但多维数据模型不仅限于三维,它可以是n维的。之所以这么叫是为了让用户更容易想象,方便解释和说明,同时也为了和传统的关系数据库中的二维表进行区分。


    在这里插入图片描述

    所以,我们可以把任意的n维数据立方体看做是(n-1)维立方体的序列,比如可以将4-D立方体看做是3-D立方体的序列


    在这里插入图片描述

    多维数据模型的模式

    多维数据模型的模式主要有星形模式、雪花模式和事实星座模式。

    1. 星形模式
      它是最常见的模式,它包括一个大的中心表(事实表),包含了大批数据但是不冗余;一组小的附属表(维表),每维一个。如下所示,从item、time、branch、location四个维度去观察数据,中心表是Sales Fact Table,包含了四个维表的标识符(由系统产生)和三个度量。

    每一维使用一个表表示,表中的属性可能会形成一个层次或格。


    在这里插入图片描述

    1. 雪花模式
      它是星模式的变种,将其中某些表规范化,把数据进一步的分解到附加的表中,形状类似雪花。

      如下所示,item这个维表被规范化,生成了新的item表和supplier表;同样location也被规范化为location和city两个新的表。


      在这里插入图片描述

    2. 事实星座
      允许多个事实表共享维表,可以看作是星形模式的汇集。如下所示,Sales和Shipping两个事实表共享了time、item、location三个维表。


      在这里插入图片描述
      总体来说,在数据仓库中多用事实星座模式,因为它能对多个相关的主题建模;而在数据集市流行用星形或雪花模式,因为它往往针对于某一个具体的主题。

    OLAP

    OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别来看一下它的特点:

    OLAP与OLTP


    在这里插入图片描述

    OLAP的类型

    首先要声明的是这里介绍的有关多维数据模型和OLAP的内容基本都是基于ROLAP,因为其他几种类型极少接触,而且相关的资料也不多。

    • MOLAP(Multidimensional)
      即基于多维数组的存储模型,也是最原始的OLAP,但需要对数据进行预处理才能形成多维结构。

    • ROLAP(Relational)
      比较常见的OLAP类型,这里介绍和讨论的也基本都是ROLAP类型,可以从多维数据模型的那篇文章的图中看到,其实ROLAP是完全基于关系模型进行存放的,只是它根据分析的需要对模型的结构和组织形式进行的优化,更利于OLAP。

    • HOLAP(Hybrid)
      介于MOLAP和ROLAP的类型,我的理解是细节的数据以ROLAP的形式存放,更加方便灵活,而高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。
      另外还有WOLAP(Web-based OLAP)、DOLAP(Desktop OLAP)、RTOLAP(Real-Time OLAP),具体可以参开维基百科上的解释——OLAP。

    OLAP的基本操作
    我们已经知道OLAP的操作是以查询——也就是数据库的SELECT操作为主,但是查询可以很复杂,比如基于关系数据库的查询可以多表关联,可以使用COUNT、SUM、AVG等聚合函数。OLAP正是基于多维模型定义了一些常见的面向分析的操作类型是这些操作显得更加直观。

    OLAP的多维分析操作包括:钻取(Drill-down)、上卷(Roll-up)、切片(Slice)、切块(Dice)以及旋转(Pivot),下面还是以上面的数据立方体为例来逐一解释下:


    在这里插入图片描述

    • 钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对2010年第二季度的总销售数据进行钻取来查看2010年第二季度4、5、6每个月的消费数据,如上图;当然也可以钻取浙江省来查看杭州市、宁波市、温州市……这些城市的销售数据。

    • 上卷(Roll-up):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据,如上图。

    • 切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者2010年第二季度的数据。

    • 切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据,或者是电子产品和日用品的销售数据。

    • 旋转(Pivot):即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。

    OLAP的优势
    OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式。

    • 数据展现方式
      基于多维模型的数据组织让数据的展示更加直观,它就像是我们平常看待各种事物的方式,可以从多个角度多个层面去发现事物的不同特性,而OLAP正是将这种寻常的思维模型应用到了数据分析上。

    • 查询效率
      多维模型的建立是基于对OLAP操作的优化基础上的,比如基于各个维的索引、对于一些常用查询所建的视图等,这些优化使得对百万千万甚至上亿数量级的运算变得得心应手。

    • 分析的灵活性
      我们知道多维数据模型可以从不同的角度和层面来观察数据,同时可以用上面介绍的各类OLAP操作对数据进行聚合、细分和选取,这样提高了分析的灵活性,可以从不同角度不同层面对数据进行细分和汇总,满足不同分析的需求。

    参考:

    《数据挖掘概念与技术》第三版-第4章

    http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/

    https://blog.csdn.net/bbbeoy/article/details/79073725

    展开全文
  • SQL SERVER 统计(1)——CUBE介绍

    千次阅读 2018-07-20 11:20:59
    我们有的时候要对数据进要做小计合计等工作,普通的方式,我们可以用聚合函数,然后配合UNION等函数处理,SQL SERVER其实提供了CUBE来实现这个功能。  以下是介绍:  CUBE 运算符生成的结果集是多维数据集。多维...

           我们有的时候要对数据进要做小计合计等工作,普通的方式,我们可以用聚合函数,然后配合UNION等函数处理,SQL SERVER其实提供了CUBE来实现这个功能。

           以下是介绍:

           CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据(即记录个别事件的数据)的扩展。扩展是基于用户要分析的列建立的。这些列称为维度。多维数据集是结果集,其中包含各维度的所有可能组合的交叉表格。 CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表包含维度列和聚合函数表达式。GROUP BY 指定了维度列和关键字 WITH CUBE。结果集包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。

           看个例子,测试数据:

    --测试数据
    if not object_id(N'Tempdb..#T') is null
    	drop table #T
    Go
    Create table #T([Item] nvarchar(22),[Color] nvarchar(22),[Quantity] int)
    Insert #T
    select N'桌子',N'白色',1 union all
    select N'桌子',N'红色',2 union all
    select N'椅子',N'白色',3 union all
    select N'椅子',N'红色',4
    Go
    --测试数据结束

            如果我们想统计各种颜色的买了多少,并且最后合计一共买了多少,用比较笨的方法可以这样实现:

    Select Color,SUM(Quantity) AS Quantity from #T GROUP BY Color
    UNION
    SELECT '合计',SUM(Quantity) FROM #T

            结果:

           我们可以看到顺序还有问题,还得要调整,这时候我们可以使用CUBE:

    SELECT
        Color,
        SUM(Quantity) AS Quantity
    FROM
        #T
    GROUP BY
        Color WITH CUBE;

           结果:

           我们看到这样就解决了上面的问题,对颜色进行了统计,同时在最后生成了合计数据,但是这里还有一个问题,就是合计那里显示的NULL,这个我们可以用GROUPING函数来解决(GROUPING后续我们会再介绍):

    SELECT
        CASE
            WHEN GROUPING(Color) = 1
                THEN '合计'
            ELSE
                Color
        END           Color,
        SUM(Quantity) AS Quantity
    FROM
        #T
    GROUP BY
        Color WITH CUBE;

           结果:

           这样就达到了我们想要的效果,后续我们会继续介绍关于CUBE的多维使用方式。

    展开全文
  • (五)Cube

    2020-02-02 21:04:48
    完善版Cube3.1 基础版Cube的问题3.2 完善版Cube顶点3.3 三角形数组3.4 法线数组3.5 完整代码4.结语 1.概述 Unity自带cube模型,但是此文实现,分基础版和完善版。基础版不进行顶点法线计算,完善版会进行法线计算...

    1.概述

    Unity自带cube模型,但是此文实现,分基础版和完善版。基础版不进行顶点法线计算,完善版会进行法线计算,结果会跟自带cube比较接近。

    2.基础版Cube

    2.1 基类

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    [RequireComponent(typeof(MeshFilter),typeof(MeshRenderer))]
    public class CreateMeshBase : MonoBehaviour
    {
        MeshFilter meshFilter;
    
        protected Mesh mesh;
    
        protected virtual Vector3[] Vertices { get; }
        protected virtual int[] Triangles { get; }
        protected virtual Vector3[] Normals { get; }
        protected virtual Vector2[] Uvs { get; }
        protected virtual string MeshName { get; }
    
        protected virtual void Start()
        {
            GetMeshFilter();
        }
    
        protected virtual void Reset()
        {
            GetMeshFilter();
        }
    
        protected virtual void OnValidate()
        {
            GetMeshFilter();
        }
    
        void GetMeshFilter()
        {
            if (meshFilter == null)
            {
                meshFilter = GetComponent<MeshFilter>();
                mesh = new Mesh();            
            }
    
            mesh.triangles = null;
            mesh.uv = null;
            mesh.vertices = null;
    
            mesh.name = MeshName;
            mesh.vertices = Vertices;
            mesh.triangles = Triangles;
            mesh.uv = Uvs;
    
            meshFilter.mesh = mesh;
        }
    
        private void OnDrawGizmos()
        {
            if (Vertices == null) return;
    
            Gizmos.color = Color.red;
            Gizmos.DrawSphere(Vector3.zero, 0.5f);
    
            Gizmos.color = Color.blue;
    
            for (int i = 0; i < Vertices.Length; i++)
            {
                Gizmos.DrawSphere(Vertices[i], 0.3f);
            }
        }
    }
    
    

    2.2 Cube代码

    代码即为定义八个顶点,然后依次设置三角形即可。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CreateCube : CreateMeshBase
    {
        public float halfLength = 5;
    
        protected override string MeshName
        {
            get
            {
                return "Cube Mesh";
            }
        }
    
        protected override Vector3[] Vertices
        {
            get
            {
                Vector3[] vertices = new Vector3[8];
                vertices[0] = new Vector3(-halfLength, -halfLength, -halfLength);
                vertices[1] = new Vector3(halfLength, -halfLength, -halfLength);
                vertices[2] = new Vector3(halfLength, -halfLength, halfLength);
                vertices[3] = new Vector3(-halfLength, -halfLength, halfLength);
    
                vertices[4] = new Vector3(-halfLength, halfLength, -halfLength);
                vertices[5] = new Vector3(halfLength, halfLength, -halfLength);
                vertices[6] = new Vector3(halfLength, halfLength, halfLength);
                vertices[7] = new Vector3(-halfLength, halfLength, halfLength);
    
                return vertices;
            }
        }
    
        protected override int[] Triangles
        {
            get
            {
                int[] triangles = new int[36]
                {
                    0,1,3,
                    3,1,2,
                    4,6,5,
                    4,7,6,
                    1,6,2,
                    1,5,6,
                    0,3,4,
                    4,3,7,
                    0,4,1,
                    1,4,5,
                    3,2,6,
                    3,6,7
                };
    
                return triangles;
            }
        }
    }
    
    

    3.完善版Cube

    3.1 基础版Cube的问题

    基础版Cube由于三个面公用一个顶点,导致此顶点处的法线和切线无法定义,所以需要分离顶点。这样顶点位置存在三个相互重合的点,每个点只跟自己对应的平面产生关系。

    3.2 完善版Cube顶点

    新Cube生成方法实在基础版基础上生成的,但是定点数由8个变成36个,即根据基础版的三角形数组生成。如下所示

        protected override Vector3[] Vertices
        {
            get
            {
                Vector3[] vertices = new Vector3[8];
                vertices[0] = new Vector3(-halfLength, -halfLength, -halfLength);
                vertices[1] = new Vector3(halfLength, -halfLength, -halfLength);
                vertices[2] = new Vector3(halfLength, -halfLength, halfLength);
                vertices[3] = new Vector3(-halfLength, -halfLength, halfLength);
    
                vertices[4] = new Vector3(-halfLength, halfLength, -halfLength);
                vertices[5] = new Vector3(halfLength, halfLength, -halfLength);
                vertices[6] = new Vector3(halfLength, halfLength, halfLength);
                vertices[7] = new Vector3(-halfLength, halfLength, halfLength);
    
                int[] triangles = new int[36]
                {
                    0,3,1,
                    3,2,1,
                    4,5,6,
                    4,6,7,
                    1,2,6,
                    1,6,5,
                    0,4,3,
                    4,7,3,
                    0,1,4,
                    1,5,4,
                    3,6,2,
                    3,7,6
                };
    
                cubeVertices = new Vector3[36];
    
                for (int i = 0; i < cubeVertices.Length; i++)
                {
                    cubeVertices[i] = vertices[triangles[i]];
                }
    
                return cubeVertices;
            }
        }
    

    3.3 三角形数组

    根据3.2生成的新的顶点数组,此时三角形数组值即为其索引,如下所示:

       protected override int[] Triangles
        {
            get
            {
                /*int[] triangles = new int[36]
                {
                    0,1,3,
                    3,1,2,
                    4,6,5,
                    4,7,6,
                    1,6,2,
                    1,5,6,
                    0,3,4,
                    4,3,7,
                    0,4,1,
                    1,4,5,
                    3,2,6,
                    3,6,7
                };*/
    
                int[] triangles = new int[36];
    
                for (int i = 0; i < triangles.Length; i++)
                {
                    triangles[i] = i;
                }
    
                return triangles;
            }
        }
    

    3.4 法线数组

    基础版cube看起来与unity自带的相比比较奇怪,这是因为没有设置顶点的法向。由于基础版公用顶点,所以法线无法定义,所以新版本法线则比较容易。如下所示:

        protected override Vector3[] Normals
        {
            get
            {
                Vector3[] normals = new Vector3[36];
    
                for (int i = 0; i < normals.Length - 2; i+=3)
                {
                    Vector3 normal = Vector3.Cross(cubeVertices[i + 1] - cubeVertices[i], cubeVertices[i + 2] - cubeVertices[i]);
    
                    for (int j = 0; j < 3; j++)
                    {
                        normals[i + j] = normal;
                    }
                }
    
                return normals;
            }
        }
    

    3.5 完整代码

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CreateNewCube : CreateMeshBase
    {
        public float halfLength = 5;
    
        private Vector3[] cubeVertices = new Vector3[36];
    
        protected override string MeshName
        {
            get
            {
                return "Cube Mesh";
            }
        }
    
        protected override Vector3[] Vertices
        {
            get
            {
                Vector3[] vertices = new Vector3[8];
                vertices[0] = new Vector3(-halfLength, -halfLength, -halfLength);
                vertices[1] = new Vector3(halfLength, -halfLength, -halfLength);
                vertices[2] = new Vector3(halfLength, -halfLength, halfLength);
                vertices[3] = new Vector3(-halfLength, -halfLength, halfLength);
    
                vertices[4] = new Vector3(-halfLength, halfLength, -halfLength);
                vertices[5] = new Vector3(halfLength, halfLength, -halfLength);
                vertices[6] = new Vector3(halfLength, halfLength, halfLength);
                vertices[7] = new Vector3(-halfLength, halfLength, halfLength);
    
                int[] triangles = new int[36]
                {
                    0,3,1,
                    3,2,1,
                    4,5,6,
                    4,6,7,
                    1,2,6,
                    1,6,5,
                    0,4,3,
                    4,7,3,
                    0,1,4,
                    1,5,4,
                    3,6,2,
                    3,7,6
                };
    
                cubeVertices = new Vector3[36];
    
                for (int i = 0; i < cubeVertices.Length; i++)
                {
                    cubeVertices[i] = vertices[triangles[i]];
                }
    
                return cubeVertices;
            }
        }
    
        protected override int[] Triangles
        {
            get
            {
                /*int[] triangles = new int[36]
                {
                    0,1,3,
                    3,1,2,
                    4,6,5,
                    4,7,6,
                    1,6,2,
                    1,5,6,
                    0,3,4,
                    4,3,7,
                    0,4,1,
                    1,4,5,
                    3,2,6,
                    3,6,7
                };*/
    
                int[] triangles = new int[36];
    
                for (int i = 0; i < triangles.Length; i++)
                {
                    triangles[i] = i;
                }
    
                return triangles;
            }
        }
    
        protected override Vector3[] Normals
        {
            get
            {
                Vector3[] normals = new Vector3[36];
    
                for (int i = 0; i < normals.Length - 2; i+=3)
                {
                    Vector3 normal = Vector3.Cross(cubeVertices[i + 1] - cubeVertices[i], cubeVertices[i + 2] - cubeVertices[i]);
    
                    for (int j = 0; j < 3; j++)
                    {
                        normals[i + j] = normal;
                    }
                }
    
                return normals;
            }
        }
    
        //override 
    }
    
    

    4.结语

    即使完善版cube也未进行uv定义以及切线定义。切线一般均为Vector4类型,值为相应切向或者(-1,0,0,-1)。至于uv问题不考虑是因为比较负责,涉及每个面都相同还是不同的uv,对于cube贴图问题一般使用自带或者cube贴图shader来实现,所以在此不做展开,如果需要可以参考如下

    展开全文
  • Cube.js:开源仪表板框架的终极指南

    千次阅读 2019-04-16 20:09:19
    Cube.js是一个用于构建分析web应用程序的开源框架,主要用于构建内部的商业智能工具或将面向客户的分析添加到现有的应用程序当中。大多数情况下,构建此类应用程序的第一步是分析仪表板。通常从“在管理面板中添加一...
  • 遇到诸如此类的问题时候,通常需要对cube进行调优,而对于cube的各个构建步骤的理解是作为cube调优过程中的必备技能之一,本篇文章将从cube的构建步骤出发,结合原理来谈谈在各构建步骤的cube优化该如何抉择 ...
  • 为了缓解 Cube 的构建压力,Apache Kylin 引入了一系列的高级设置,帮助用户筛选出真正需要的 Cuboid。这些高级设置包括聚合组(Aggregation Group)、联合维度(Joint Dimension)、层级维度(Hierachy Dimension)...
  • STM32CubeMX介绍、下载与安装

    万次阅读 多人点赞 2016-08-16 22:52:55
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!... ...本教程今年更新了部分内容:STM32CubeMX系列教程 ...相信很多人都知道STM32CubeMX这个工具,也是近年...
  • STM32 使用Cube的心得(一)

    万次阅读 2018-05-28 15:06:42
    最近做了一个项目使用Cube自动生成代码,然后利用HAL库进行编程。芯片为STM32F103C8T6进行编程。I2C读写1. 地址需要自己左移1位(stm32中需要,但是NXP中不需要),LPC系列的以前用过一款,函数内部自动左移了。2. ...
  • STM32 CubeIDE快速创建工程(图文详解)

    万次阅读 热门讨论 2020-03-01 13:10:44
    使用STM32CubeIDE快速创建STM32的HAL库工程。
  • stm32CubeIDE开发笔记0:前言及stm32CubeIDE安装

    千次阅读 多人点赞 2019-08-19 16:21:40
    stm32CubeIDE简介及安装,HAL库简介
  • STM32CubeIDE属于一站式工具,本文带你体验它的强大

    万次阅读 多人点赞 2019-04-29 18:24:02
    置顶/星标公众号,不错过每一条消息 STM32CubeIDE属于一站式工具,那么本文也一站式带你体验:下载安装,配置生成代码,硬件在线调试。...STM32CubeMX升级至V5.2.0,STM32CubeIDE正式面世 STM32CubeID...
  • 文章目录STM32Cube EcosystemSTM32Cube PC ToolsSTM32 Embedded SoftwareSTM32Cube MCU Packages底层库代码中间件代码用户代码STM32Cube Expansion STM32Cube Ecosystem STM32Cube是ST公司开发的一套生态系统,致力...
  • 2、此资源为STM32CubeF4固件包:STM32Cube_FW_F4_V1.22.0。 3、V1.22.0更新历史记录 V1.22.0 / 26-October-2018 主要变化 感谢收购Draupner Graphics A / S. ST通过先进易用的图形软件解决方案扩展了STM32生态系统...
  • STM32Cube使用教程

    2018-12-07 14:31:49
    STM32Cube使用教程,如何快速开发,怎么新建工程,怎么配置工程。
  • STM32CubeIDE使用

    万次阅读 2019-09-20 10:09:26
    STM32CubeIDE属于一站式工具,本文带你体验它的强大 第一个STM32CubeIDE项目 STM32CubeIDE使用记录 STM32CubeIDE使用笔记(03):使用ST-LINK调试程序 安装 STM32终于出了这样一款工具,之前也出过开源的eclipse...
  • STM32Cube MCU软件包和STM32Cube扩展软件包3.1 STM32Cube MCU软件包3.2 STM32Cube扩展软件包4. 包装要求4.1 使用STM32CubeMX开发示例4.2 STM32Cube MCU软件包驱动程序和中间件的扩展5. 新的中间件集成5.1 要求5.2 ...
  • STM32Cube IDE WIN 安装包

    2020-08-31 12:23:35
    STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包 STM32Cube IDE WIN 安装包

空空如也

1 2 3 4 5 ... 20
收藏数 77,160
精华内容 30,864
关键字:

Cube