golang渲染svg和更多数学!(代码片段)

author author     2023-01-31     600

关键词:

package main

import (
	"fmt"
	"io/ioutil"
	"math"
	"strconv"
)

const (
	width, height = 600, 600
	cells         = 100
	xyrange       = 30.0
	xyscale       = width / 2 / xyrange
	zscale        = height * 0.4
	angle         = math.Pi / 6
)

var sin30, cos30 = math.Sin(angle), math.Cos(angle)

func main() 

	var outputResult string

	outputResult = "<svg xmlns='http://www.w3.org/2000/svg' " +
		"style='stroke: blue; fill: white; stroke-width: 0.7' " +
		"width='" + strconv.Itoa(width) + "' height='" + strconv.Itoa(height) + "'>"

	for i := 0; i < cells; i++ 
		for j := 0; j < cells; j++ 
			ax, ay := corner(i+1, j)
			bx, by := corner(i, j)
			cx, cy := corner(i, j+1)
			dx, dy := corner(i+1, j+1)

			outputResult = outputResult + "<polygon points='" +
				ax + "," + ay +
				bx + "," + by +
				cx + "," + cy +
				dx + "," + dy +
				"'/>\n"
		
	
	outputResult = outputResult + "</svg>"
	fmt.Printf(outputResult)
	err := ioutil.WriteFile("surface-plot.svg", []byte(outputResult), 0644)
	if err != nil 
		fmt.Printf("Error: %s", err)
	


func corner(i, j int) (string, string) 
	x := xyrange * (float64(i)/cells - 0.5)
	y := xyrange * (float64(j)/cells - 0.5)

	z := f(x, y)

	sx := width/2 + (x-y)*cos30*xyscale
	sy := height/2 + (x+y)*sin30*xyscale - z*zscale

	xResult := strconv.FormatFloat(sx, 'f', -1, 64)
	yResult := strconv.FormatFloat(sy, 'f', -1, 64)
	return xResult, yResult


func f(x, y float64) float64 
	r := math.Hypot(x, y)
	return math.Sin(r)

数据可视化分析(代码片段)

...使用人数最多的。  在Echarts4.0中提供了canvas和svg两种渲染方式,而d3是以svg为主的。另外,对于Echarts来说,默认使用的时canvas渲染,但是我们可以配置为svg渲染。另外,Echarts底层使用了canvas类库zrender,它是非常轻量的。  ... 查看详情

svg和canvas比较以及svg简单介绍(代码片段)

...js绘制)1.依赖于分辨率2.不支持事件处理器3.较弱的文本渲染能力4.能以pngjpg的格式保存图像5.最适合对象会被重复绘制的图像密集性游戏SVG的优缺点(标签绘制)1.不支持分辨率2.支持事件处理器3.适合带有大型渲染区域的应用程... 查看详情

svg使用标记不渲染渐变firefox(代码片段)

我有一个在SVG中构建的javascript应用程序(类似CAD),它使用tools标签插入use(使用Inkscape在SVG中构建的对象)。一切都在Chrome和Safari上运行良好(从未在IE中测试过),但在Firefox中,所有带渐变的fill对象都无法呈现。如下图所示... 查看详情

反射渲染svg会覆盖页面上的其他svg(代码片段)

...码时,页面呈现的3个SVG都是相同的,如下所示:我首先渲染的SVG似乎接管了所有其他SVG。如果我把<EmptyCart/>放在第一位,它们都将是购物车图标。但这是真正的踢球者:当我检查DOM时,SVG似乎都是正确的(它们彼此完全不... 查看详情

svg动画精髓(代码片段)

...入手,然后,慢慢深入。介绍一些动画基本原理和对应的数学原理知识点。并且文章后面,还附有相关语法的介绍,当你在遇到不熟悉语法的时候可以参考参考。 查看详情

如何使用 start 和 endAngle 渲染 svg 圆

】如何使用start和endAngle渲染svg圆【英文标题】:HowtorenderasvgcircleusingstartandendAngle【发布时间】:2017-12-1901:51:56【问题描述】:我已经使用start和endAngle渲染了svg圆。它工作得很好。但是当我渲染完整的圆(startAngle为70,endAngle为70... 查看详情

text故事:lijian将提交他在golang的数学中找到的'bug'。实现...(代码片段)

查看详情

vue的列表渲染及组件渲染(代码片段)

Vue的列表渲染注:其实使用的还是相关的vue的指令进行相应的数据绑定和渲染在前边写过一个博客来说指令的相关内容但是写的不细,就是写了相应的使用方法,在此要提到之前遇到的一个问题就是前端拿到返回数据进行数据渲... 查看详情

golang并发介绍(代码片段)

概述简而言之,所谓并发编程是指在一台处理器上“同时”处理多个任务。随着硬件的发展,并发程序变得越来越重要。Web服务器会一次处理成千上万的请求。平板电脑和手机app在渲染用户画面同时还会后台执行各种计算... 查看详情

go语言入门(代码片段)

...译时间,创建运行更快的程序,享受更多的乐趣--什么是GolangGolang是谷歌创建的,开放源代码、编译型和静态类型的编程语言。Golang的主要关注点在使开发高可用和可伸缩的web应用程序更加简单和容易。Golang最主要的特性自动垃... 查看详情

golang网页渲染保存成图片

...叠加,最后生成一张图片返回。另外,利用Serverless部署Golang服务,使用Serverless利用它自动扩缩容的优点,提高服务性能,以及优化成本。 查看详情

canvas与svg特性和使用对比(代码片段)

...。CanvasCanvas通过JavaScript来绘制2D图形。Canvas是逐像素进行渲染的。在canvas中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。两... 查看详情

是否可以直接在 Svelte 中渲染 SVG 元素?

】是否可以直接在Svelte中渲染SVG元素?【英文标题】:IsitpossibletorenderSVGelementsdirectlyinSvelte?【发布时间】:2020-08-1014:33:00【问题描述】:我正在尝试在Svelte中导入和渲染SVG。我正在使用@rollup/plugin-url像这样导入SVG代码:<script&g... 查看详情

使用 SVG 进行 2D 渲染和放大

】使用SVG进行2D渲染和放大【英文标题】:2DrenderingandzoominginwithSVG【发布时间】:2010-11-0514:22:29【问题描述】:我的任务是开发一种算法,将不同类型的曲线拟合到二维空间中的给定点序列上。为了能够测试我的算法,我选择了S... 查看详情

使用 OpenGL(和 OpenGL ES)渲染 SVG

】使用OpenGL(和OpenGLES)渲染SVG【英文标题】:RenderingSVGwithOpenGL(andOpenGLES)【发布时间】:2011-09-1108:57:03【问题描述】:我目前正在研究使用OpenGL和OpenGLES从SVG文件渲染矢量图的可能性。我打算针对Windows和Android。我理想的解决方... 查看详情

svg动画精髓(代码片段)

...入手,然后,慢慢深入。介绍一些动画基本原理和对应的数学原理知识点。并且文章后面,还附有相关语法的介绍,当你在遇到不熟悉语法的时候可以参考参考。前面一篇文章,主要介绍了一些SVG的基本概念和基本图形。接下来... 查看详情

如何在 .NET 环境中打开和渲染 SVG 文件?

】如何在.NET环境中打开和渲染SVG文件?【英文标题】:HowtoopenandrenderSVGfilesin.NETenvironment?【发布时间】:2011-11-0413:07:55【问题描述】:.NET中处理SVG图像有没有相对简单的方法?如何从文件中提取所有图元。如何将SVG文件渲染到... 查看详情

gacui:跨平台和渲染器(代码片段)

GacUI:跨平台和渲染器https://github.com/vczh/GacUIBlogUI库跨平台的方法无非就是每个平台写一次。而如何把更多的共同点抽取出来,尽量的减少每个平台写一次的部分,是每一个跨平台的UI库的重点之一。GacUI的设计比较直... 查看详情