基于jsp的像素着色

基于jsp的像素着色 一,用户界面 注意: 需要在Chrome浏览器上运行,使用IE等其他浏览器可能出现各种不兼容现象, 二,操作方法 在绘图区域点击鼠标

本文包含相关资料包-----> 点击直达获取<-------

基于jsp的像素着色

一、用户界面

注意: 需要在Chrome浏览器上运行,使用IE等其他浏览器可能出现各种不兼容现象。

二、操作方法

  • 在绘图区域点击鼠标,绘制多边形。在还差一条边没有绘制时,右键点击画布或者按下空格键可以自动封闭多边形。

  • 点击右上侧按钮可以选择目标多边形。选中后,点击下面按钮可以进行进一步的操作:

  • 清除选中状态: 取消对多边形的选择。
  • 添加内环: 点击后,紧接着绘制的下一个多边形将成为目标多边形的内环。
  • 选择裁剪对象: 点击该按钮后,要继续点击另一多边形对应的 按钮 。将进行裁剪操作,原多边形作为主多边形,后点击的将作为裁剪多边形。
  • 平移、旋转、缩放、翻转。
  • 着色。
  • 重置多边形: 清除当前所有多边形。

  • 部分操作可以用键盘代替:

操作 键盘方法
封闭多边形 space
平移 上下左右
旋转 shift+左右
缩放 shift+上下
翻转 alt+上下左右

三、效果展示

3.1 裁剪

3.2 着色

四、特色

  • 仅使用了setPixel函数。

  • 可以判断多边形合理性,避免内环画在外面、多边形自相交等状况。

  • 交互友好,可以轻松添加多边形并对其操作。

  • 允许存在多个多边形。

  • 手动实现了双缓冲绘制,刷新时只绘制发生变化的像素,大大节约时间。

五、算法概览

在这里列出程序用到的主要的函数。

功能 函数名 算法
画线 _lineTo Bresenham算法。
着色 colorPolygons 逐点判断方法。
求坐标是否在多边形内 isIn 将该点与多边形各个顶点连线,分别求内外环各个夹角的度数和。若在外环内、内环外,则为多边形内部
判断线段是否相交 isTwoLinesCross 先判断显然不相交的情况,再求向量叉积判断
判断多边形自相交 checkCross 枚举各边是否相交
求线段交点 crossPoint 先判断相交,再求两直线方程交点
封闭多边形 closePath 判断是否自相交; 将当前绘制的线段排序,并压进polygons数组; 添加按钮
对线段排序(顺逆时针) sortVertex 使用 Paul Bourke的方法 ,并区分内外环
求几何重心 getCenter 参照维基百科的公式,并非简单的求各个点坐标平均值: 此外,内环相当于负质量,应减去。
旋转 rotate 将选中的多边形的各个顶点相对于多边形重心的各个向量分别旋转,再加回重心
多边形边交点排序 sortCrossPoint 该函数在裁剪多边形中用到,目的是对主多边形的一条边与裁剪多边形的交点的排序。根据端点的顺序,对各个交点的横坐标做冒泡排序。
裁剪多边形 cutPolygon 使用Weiler-Atherton算法。先改变多边形数据结构,从边表转成顶点表。再求两个多边形的交点,并插入顶点表,对应的顶点索引关系存储在connect数组中。 若connect为空 则特殊处理。接下来从connect数组中选点开始算法,标记connect数组的元素。回到起始点后,将当前多边形push进结果数组,并寻找下一个未标记的connect,继续算法。最后,将顶点表转换回边表。产生的结果可能有多个多边形,它们将被作为不同的多边形依次被添加。

参考文献

  • 基于JSP的学生就业信息管理系统设计与实现(吉林大学·马骁)
  • 基于JSP技术的毕业生信息管理系统的设计与实现(吉林大学·孙佳帝)
  • 基于JSP的校园管理网站系统的设计与开发(电子科技大学·张志红)
  • 计算机文化基础网络课件(吉林大学·林凌)
  • 基于EPP的域名管理系统(山东大学·孟庆领)
  • 沈阳超高压局通信设备运行参数管理信息系统(大连理工大学·杨楠)
  • 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
  • 基于JSP的艺术院校图书管理系统的设计与实现(西安电子科技大学·王擒龙)
  • 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
  • 基于JSP平台的信息发布系统的设计与实现(北京工业大学·徐慧君)
  • 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
  • 电子商务门户网站的研究与实现(大庆石油学院·戴庆)
  • 基于JSP平台的信息发布系统的设计与实现(北京工业大学·徐慧君)
  • 基于J2EE和MVC模式的Web应用研究(武汉理工大学·刘继华)
  • 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计客栈 ,原文地址:https://m.bishedaima.com/yuanma/35591.html

相关推荐

  • 基于SSM框架的电影院售票系统

    这是一个🔥🔥基于SSM框架的电影院售票系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 SSM框架电影院售票系统开发技术栈为SSM项目,可以作为毕业设计课程设计作业使用SSM框架实现一个电影院售票平台
    2024年05月23日
    15 1 2
  • 基于Python的中文自动分词实验

    中文自动分词实验 实验内容 使用任意分词方法进行分词 实验要求和目的 使用任意分词方法实现汉语自动分词; 给出至少 1000 个句子的分词结果(以附件形式); 计算出分词结果的正确率
    2024年05月14日
    2 1 1
  • 基于springboot的在线慕课学习网站,基于javaweb的mooc网站

    设计并实现基于Spring Boot的在线慕课学习网站和基于JavaWeb的MOOC网站是当前计算机科学领域的研究热点之一,随着互联网的普及和技术的不断发展,人们对于便捷高效的在线学习方式的需求日益增加
    2024年05月07日
    9 1 1
  • 基于Python制作的记忆翻牌小游戏

    基于 Python 制作的记忆翻牌小游戏 导语 昨天看到有留言竟然说我是月更博主,我明明更新地这么勤快(心虚,jpg),看吧,昨天刚更新过,今天又来更新了
    2024年05月14日
    18 1 3
  • 基于SpringBoot框架的旅游管理系统

    这是一套采用🔥🔥SpringBoot为核心的旅游管理系统的源代码实现,主要编程语言为Java,并结合了Vue技术进行开发,开发工具选择的是Idea或Eclipse,此项目是一个精简版的旅游管理应用
    2024年05月23日
    4 1 2
  • 基于Python制作小恐龙游戏

    基于 Python 设计的小恐龙小游戏 本来想带大家用遗传算法再训一波龙的,于是把自己之前写的仿谷歌浏览器小恐龙代码找了出来,就是这个: Python 制作小游戏(七) 想在它基础上加 AI 控制的代码的
    2024年05月14日
    5 1 1
  • 基于PHP和Web的subversion用户管理系统

    基于PHP和Web的subversion用户管理系统 摘 要 本系统主要是基于Web的subversion系统的用户管理系统,在开源软件世界,并行版本系统(cvs)一直是版本控制长久以来的唯一选择
    2024年05月14日
    2 1 1
  • 基于JSP和MySQL的电脑彩票销售管理系统的设计与实现

    基于Jsp和Mysql的电子产品销售管理系统 1 绪论 随着科技水平的飞速发展,计算机走进了千家万户,人们开始越来越多地利用计算机解决和日常生活相关的各种问题
    2024年05月14日
    4 1 1
  • 构造正规式r1|r2

    近年来,随着计算机科学领域的迅速发展,正规式与自动机理论作为编译原理等诸多领域的基础,备受关注,在编写程序中,正规式的构造是一项常见而且关键的任务,特别是在涉及到复杂文本匹配与处理的场景下
    2024年05月07日
    7 1 3
  • 基于JAVA实现的超级马里奥(Super Mario)游戏

    基于JAVA实现的超级马里奥(Super Mario)游戏 一,项目简介 刚进入的时候会有一个界面,为地图编辑器,可以使用此编辑器进行地图编辑,地图编辑器的内容包括:关卡
    2024年05月14日
    6 1 2

发表回复

登录后才能评论