MUL

ghpython怎么实现koch曲线的分形效果

℡╲_俬逩灬. 提交于 2020-08-05 13:24:03
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:彦页走刀口 今天我们来看看用ghpython怎么实现koch曲线的分形效果,前两天分享的雪花分形是利用grasshopper的循环插件anemone实现的,然后有个小伙伴说了句十分激励人心的话,叫普通程序员用循环,天才程序员用递归,咱们就来看看用递归怎么搞咯。 首先以基础多边形为初始线,将其炸开,因为后边要分别对每一根线进行分形操作。 经过ghpython一通操作猛如虎之后,就得到了按递归次数分组的分形线,最后将分形线进行join,并分别进行缩放和着色。 # 雪花分形 import rhinoscriptsyntax as rs from Grasshopper import DataTree from Grasshopper.Kernel.Data import GH_Path import ghpythonlib.treehelpers as gt # 函数1,定义一个对直线等分,移动等分点,连接成折线的函数 def fractal(line): # 对直线三等分,得到四个点 pts=rs.DivideCurve(line,3 ,False,True) # 将第三个点以第二个点为中心旋转-60° pt_rotate=rs.RotateObject

js大数相加和大数相乘

流过昼夜 提交于 2020-08-04 19:38:52
1. 大数相加 function addBigNum(a,b){ var res = '' , loc = 0 ; a = a.split('' ); b = b.split('' ); while (a.length || b.length || loc){ // ~~把字符串转换为数字,用~~而不用parseInt,是因为~~可以将undefined转换为0,当a或b数组超限,不用再判断undefined // 注意这里的+=,每次都加了loc本身,loc为true,相当于加1,loc为false,相当于加0 loc += ~~a.pop() + ~~ b.pop(); // 字符串连接,将个位加到res头部 res = (loc % 10) + res; // 当个位数和大于9,产生进位,需要往res头部继续加1,此时loc变为true,true + 任何数字,true会被转换为1 loc = loc > 9 ; } return res.replace(/^0+/,'' ); } 2. 大数相乘 function multiplyBigNum(num1, num2) { // 判断输入是不是数字 if (isNaN(num1) || isNaN(num2)) return "" ; let len1 = num1.length, len2 = num2.length;

java Double 进行加减乘除

懵懂的女人 提交于 2020-05-08 15:34:37
package org.fh.util;import java.io.Serializable;import java.math.BigDecimal;import java.math.RoundingMode;/** * double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型 * 整型地方法适合于货币精度已知的情况,比如12.11+1.10转成1211+110计算,最后再/100即可 以下是摘抄的BigDecimal方法: *//** * 说明:Double工具类 * from:www.1b23.com */ public cla s s DoubleUtil implements Serializable { private static final long serialVersionUID = -3345205828566485102L; // 默认除法运算精度 private static final Integer DEF_DIV_SCALE = 2; /** * 提供精确的加法运算。 * * @param value1 被加数 * @param value2 加数 * @return 两个参数的和 */ public static Double add(Double value1, Double

Spring Boot 集成 Flyway 实现数据库版本控制

无人久伴 提交于 2020-05-08 15:28:42
在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表、在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?如何在测试/生产服务器上快速同步? 每次发版的时候,由于大家都可能有 sql 更改情况,这样就会有以下痛点: 忘记某些 sql 修改 每个开发人员的 sql 的执行顺序问题 重复更新 需要手动去数据库执行脚本 以上问题以及痛点可以通过 Flyway 工具来解决,Flyway 可以实现自动化的数据库版本管理,并且能够记录数据库版本更新记录。 Flyway 简介 Flyway 是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway 可以像 Git 管理不同人的代码那样,管理不同人的 sql 脚本,从而做到数据库同步,更多的信息可以在 Flyway 的官网上进行阅读学习。 另外 Flyway 支持很多关系数据库,具体如下所示: 下面我们在 Spring Boot 中集成 Flyway 来实现数据库版本控制。 Spring Boot 集成 Flyway 首先创建一个 SpringBoot 项目,然后在 pom.xml 加入如下依赖集成 Flyway: <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core

VS2013环境生成和调用DLL动态链接库

不羁的心 提交于 2020-05-08 00:54:00
http://blog.csdn.net/u010273652/article/details/25514577 创建动态库方法: 创建动态库是生成 .dll .lib 两个个文件 文件 -> 新建 -> 项目 -> win32控制台应用程序 项目名称:DLLGenerator 应用程序类型:DLL 附加选项:空项目 建立源文件dllgenerator.cpp (不需要主函数,只写你需要动态调用的函数) [cpp] view plain copy // 整数加法和乘法 int Add( int a, int b){ return a + b; } int Mul( int c, int d){ return c * d; } 建立头文dllgenerator.h (一定要把函数声明写好) [cpp] view plain copy int Add( int, int); int Mul( int, int); 建立源文件dllmain.cpp (一定要包含#include<windows.h>) - 下面的函数是VS2013自动生成,没生成复制即可。其实是在创建工程项目时不选空项目时候vs自动生成的,但不选空项目会产生很多其他文件和依赖项,本文教你建立最纯净的工程,注意包含window.h [cpp] view plain copy // dllmain.cpp : 定义 DLL

DLL发布 matlab代码发布

余生颓废 提交于 2020-05-08 00:21:52
https://blog.csdn.net/alansss/article/details/81320548 最近需要将写好的matlab代码转成基于OpenCV的代码,然后再封装成dll进行发布。一开始直接看基于OpenCV的dll生成,但是都不太成功,故而先试试没有OpenCV的dll生成。 主要参考了以下两个网页: VS2013生成dll及动态调用: https://blog.csdn.net/liu_matthew/article/details/55804710 vs 无法将参数 1 从“const char *”转换为“LPCWSTR” 解决办法: https://blog.csdn.net/u011394598/article/details/80536753 第一步:文件->新建->项目->win32控制台应用程序 项目名称:DLLGenerator 应用程序类型:DLL 附加项目:空项目 第二步:在创建的dll工程中编写自己需要编译成dll的函数cpp和头文件h dll.h #ifndef DLL_H #define DLL_H // h文件 int Add( int a, int b); int Mul( int c, int d); #endif View Code dll.cpp #include " DLL.h " // cpp文件 int Add(

java Double 进行加减乘除

白昼怎懂夜的黑 提交于 2020-05-07 16:19:01
double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型 Double 工具类 package org.fh.util; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; /** * double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型 * 整型地方法适合于货币精度已知的情况,比如12.11+1.10转成1211+110计算,最后再/100即可 以下是摘抄的BigDecimal方法: */ /** * 说明:Double工具类 * from:www.1b23.com */ public class DoubleUtil implements Serializable { private static final long serialVersionUID = -3345205828566485102L; // 默认除法运算精度 private static final Integer DEF_DIV_SCALE = 2; /** * 提供精确的加法运算。 * * @param value1 被加数 * @param

汇编语言——标志寄存器

只愿长相守 提交于 2020-05-06 23:40:27
标志寄存器 flag 和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。 而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。 8086CPU的flag寄存器的结构: ZF标志 flag的第6位是ZF,零标志位(zero flag)。 它记录相关指令( add、sub、mul、div、inc、or、and 操作)执行后, 结果是否为0 。ZF = 1结果不为0,ZF = 0结果为0。 mov、push、pop 等传送指令不修改标志寄存器的信息。 PF标志 flag的第2位是PF,奇偶标志位。 它记录指令执行后,结果的所有 二进制位中1的个数是否为偶数 ,如果为偶数则PF = 1,为奇数,PF = 0。 SF标志 flag的第7位是SF,符号标志位。 它记录指令执行后,结果 是否为负(就是看它二进制的第一位是不是1) ,如果为负数则SF = 1,结果为正,SF = 0。 例如: 我们可以将add指令进行的运算当作 无符号数 的运算,那么add指令相当于计算129+1,结果为130(10000010B), 也可以将add指令进行的运算当作 有符号数 的运算,那么add指令相当于计算-(125+1)(补码=-(原码取反+1)),结果为-126(10000010B)。 CF标志 flag的第0位是CF,进位标志位。 一般情况下

codeforces Round #541 (Div 2)

那年仲夏 提交于 2020-05-06 08:54:54
A Sea Battle 平移过后即外围的$(w_{2} + 2) \times (h_{1} + h_{2} + 2)$的矩形周长; 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int w1,w2,h1,h2; 5 cin>>w1>>h1>>w2>> h2; 6 int a=w1+ 2 ,b=h1+h2+ 2 ; 7 cout<<((a+b)<< 1 )- 4 << endl; 8 return 0 ; 9 } View Code B Draw! 为了方便设初始比分为$(-1,-1)$,假设上一次的比分为$(x_{0},y_{0})$,这次比分为$(x_{1},y_{1})$ 若:1.$max(x_{0} , y_{0}) > min(x_{1} , y_{1}) $ 此时变化中一定不会出现相同的情况; 2.$max(x_{0} , y_{0}) <= min(x_{1} , y_{1})$最优的情况是将$x_{0},y_{0}$都先变成较大值,再一起增加,最后再单个增加; 注意对$x==y$的一点点特判; 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,a,b,la,lb; 4 int main(){ 5 scanf( " %d

Python编程的若干个经典小技巧

亡梦爱人 提交于 2020-05-06 00:30:41
1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y= 10,20 print(x,y) x,y= y,x print(x,y) #1 (10, 20) #2 (20, 10) 赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 <a> 和 <b>。 一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。 2. 链状比较操作符 比较操作符的聚合是另一个有时很方便的技巧: n= 10 result= 1< n< 20 print(result) # True result= 1> n<= 9 print(result) # False 3. 使用三元操作符来进行条件赋值 三元操作符是 if-else 语句也就是条件操作符的一个快捷方式: [表达式为真的返回值] if [表达式] else [表达式为假的返回值] 这里给出几个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。如果需要的话我们也可以延长这条操作链。 x = 10 if (y == 9) else 20 同样地,我们可以对类做这种操作: x = (classA if y == 1 else classB)(param1,