`
yiyeqinghuasoon
  • 浏览: 643682 次
文章分类
社区版块
存档分类
最新评论

程序员进阶之一

 
阅读更多

前段时间写过几篇<致新手>,对广大青菜还是有用的,现在给有一定基础的写几篇

以前我不怎么重视数学,尤其是高等数学,高考时候就是因为数学不及格,与重点大学擦肩而过...

近期搞些3D啊什么的算法,才发现高级的数学知识还是挺有用的~

也证明了那句话:书到用时方恨少! 还好我只缺数学,而且重视一下问题就可以解决了.

第一个例子,我们自己画一个圆角的窗口.

首先,任何窗口(Window)在Windows下都是一个矩形的区域,常见的做法是:

透明不想要的区域,将该区域设为某一种颜色,然后透明该颜色

圆角其实只要在四个顶角画一个圆,圆以外部分透明即可

然而做一件事情,我们的追求往往是这样,做得了->做得好->做得妙!

最笨的方法当然是二重循环,一个个点的算出距离,然后距离大于R的画上紫色

对于无边框的窗体,代码就应该是

然而,直观看出半径以外的区域占的面积是较小的,因此有一部分我们其实不必要判断的

那就是这条直线以内的,用两点可以求出方程,对于右上角就是Y=R-X

如果是逐列(从左到右)处理,直接代入,我习惯逐行,因此变换一下为:X=R-Y

那么处理右上角的代码就应该是:

至此,我们有一半的面积没有参与计算,速度就提高了将近一倍!

对于其他的顶角,一样的道理

然而这是又有另外一个问题,半径的大小怎么定?

如果是标题栏高度的一半,那么显得像个帽子,1/4有点感觉,还是没到点上

我们换一个半径,都市的白领喜欢搞三角关系,我们也用三角形说明问题

如图,BC=AB/2, CD=BC, AE=AD

我相信有人知道我想说什么,不错,黄金分割点,约为0.618

确切的值是:根号5-1的差的一半

分割比K有很多奇妙的东西,比如1/1+K=K,1+K/1=1/K

我们用1-K来做为圆角直径,实际上微软的XP窗口就是这么干的,好了贴代码

文章写的有点久,丢失了一次,影响心情,C/C++的代码就不写了,郁闷

分享到:
评论

相关推荐

    一个程序员的自省(博客园)--超级推荐

    编写自文档化的代码/如果说编程语言是一种宗教,你的信仰是?/迷人的斐波那契数 /iBATIS In Action:序言和目录

    《C、C++实践进阶之道:写给程序员看的编程书》-陈黎娟,带章节书签

    这是一本C/C++语言应用能力进阶的图书,总结了一个典型的学习者第101个小时开始的学习路线和心得,你值得拥有。 本书内容包括夯实C语言核心基础、提升你的编程功力、积累专业程序员开发经验、理解C++精髓和以C++为...

    word源码java-java-learning:一个java高级工程师的进阶之路

    一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您对JAVA...

    百度地图开发java源码-JavaPlan:Java学习、进阶、面试、架构师成长之路,Java程序员进阶大牛的核心知识体系

    总归一句话:养成一颗奋发的平常心。 声明:整理内容大部分来源于网络,如果内容作者认为侵犯了您的权益,请联系邮箱,我会配合处理,谢谢。 为了获得更好的阅读体验,在线阅读推荐方式 实用工具 论坛网站 文档大全 ...

    C++编程思想[第一卷]pdf

    C/C++进阶书籍系列C/C++程序员进阶之路高清pdf系列书籍之--C++编程思想[第一卷]pdf

    SpringCloud微服务开发实战教程idea版课件

    Spring Cloud是目前最流行的进行微服务架构的框架之一,是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集。目前已经在各大互联网公司得到广泛应用,是进行微服务架构的优先选择...

    统计思维:程序员数学之概率统计

    如生成服从各种分布的样本 通过模拟理解数学上艰涩的概念 学习贝叶斯估计等实用内容 用Python导入各种来源的数据 运用统计推断解决真实数据问题《统计思维:程序员数学之概率统计》是一本以全新视角讲解概率...

    通俗易懂、风趣幽默的Java学习指南

    一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准Java 程序员进阶之路

    深入PHP 面向对象 模式与实践第3版(完整版) 35M

    本书最后一部分围绕PHP应用程序开发,详细介绍了一批极为实用的辅助开发工具,讨论了具有普遍意义的最佳开发..., 本书适合每位PHP程序员进阶参考,帮助他们掌握PHP面向对象设计和开发的精髓,跻身高端PHP程序员之列。

    统计思维-程序员数学之概率统计【百度云】

    如生成服从各种分布的样本 通过模拟理解数学上艰涩的概念 学习贝叶斯估计等实用内容 用Python导入各种来源的数据 运用统计推断解决真实数据问题《统计思维:程序员数学之概率统计》是一本以全新视角讲解概率...

    程序员经典C++讲义从入门到进阶

    这是一套程序员C++讲义,讲义分为多个阶段的讲义,这里整理了基础入门、核心编程和提高编程的PDF讲义内容,一个不错的C++教程,从0到1入门编程讲义,最详细的c++入门,核心,提高讲义笔记,需要的朋友可下载试试!...

    C#与.NET程序员面试宝典

    《C#与.NET程序员面试宝典》主要内容包括:面试流程、基础语法和技术框架、数据访问及XML应用、高级特性及应用进阶、测试及质量保证、跨国公司经典面试题等。 《C#与.NET程序员面试宝典》附带1张光盘,内容为书中...

    java 进阶之路.zip

    面试高频算法、akka、多线程、NIO...自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。

    Hive_优化——深入浅出学Hive

    大数据湖中Hive是一个非常重要的工具,它是用来做数仓、BI的不二之选,虽然Hive其实就是写Sql但是,对于其原理和优化我们在实际工作中必须要了解的,有利于提高集群的执行效率,也是程序员进阶的一项指标

    EJB轻松进阶之一

    SUN公司认证Java程序员(SCJP)与SUN公司认证Java开发员(SCJD)之间的一个显著区别就是:SCJP不考EJB,而SCJD要考。随着越来越多的企业采用J2EE平台开发电子商务应用系统,EJB开发已成为今天的Java程序员必须要面对...

    .NET之美:.NET关键技术深入解析

    本书是.NET 程序员进阶修炼的必读之作,由拥有多年开发经验的资深.NET 技术专家对C# 和.NET 中实用的、关键的和难以理解的知识点进行了深入解析,旨在帮助读者在尽可能短的时间内以 尽可能低的学习成本去掌握那些最...

    .net之美 子阳

    本书是.NET 程序员进阶修炼的必读之作,由拥有多年开发经验的资深.NET 技术专家对C# 和.NET 中实用的、关键的和难以理解的知识点进行了深入解析,旨在帮助读者在尽可能短的时间内以 尽可能低的学习成本去掌握那些最...

Global site tag (gtag.js) - Google Analytics