首页 / GO / go语言学习-笔记4
go语言学习-笔记4
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了go语言学习-笔记4,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2110字,纯文字阅读大概需要4分钟。
内容图文
![go语言学习-笔记4](/upload/InfoBanner/zyjiaocheng/1193/eb6433e6656d457ab89342a2b7a88379.jpg)
go image 试验, 生成心形线。
思路: go image 包生成的image数据 -> 转化为html 格式, 通过网页查看图片。
先上脚本(更改数据格式为 -> html)
gofile=$1
htmfile=$2
go build $gofile.go
eval "./$gofile" >> temp_go_jpg.data
if [ -e "$htmfile.html" ]
then
rm $htmfile.html
fi
echo "<img src=\"data:image/png;base64," >> $htmfile.html
sed -i "s/IMAGE://g" temp_go_jpg.data
cat temp_go_jpg.data >> $htmfile.html
echo "\">" >> $htmfile.html
rm temp_go_jpg.data
其中标红的即为替换数据部分.
echo "<img src=\"data:image/png;base64," >> $htmfile.html
sed -i "s/IMAGE://g" temp_go_jpg.data
cat temp_go_jpg.data >> $htmfile.html
echo "\">" >> $htmfile.html
这样假如脚本文件为 gen.sh,go文件为 image.go, 要生成 index.html, 即可以 运行命令 ./gen.sh image index
心形线选择的方程为 : (x2 + y2 - t)3 = x2y3
为了有一点渐变效果, 心型区域着色根据t变化
代码如下:
package main import ( "golang.org/x/tour/pic" "image" "image/color" "math" ) type Image struct { width int } // 计算心形线半径 func (img *Image) CalcHeartRadius(x, y, shift int) float64 { // 心形线方程: (x^2 + y^2 - t)^3 = x^2 * y^3, 求t // 做标轴修正 x = x, y = -y, 方程 (x^2 + y^2 - t)^3 = 0 - x^2 * y^3, 求t // x = x - shift, y = y - shift fx := float64(x) - float64(shift) fy := float64(y) - float64(shift) fValue1 := math.Pow(fx, 2) fCbrt := math.Cbrt(fValue1) * fy ft := math.Pow(fx, 2) + math.Pow(fy, 2) + fCbrt if ft < 0 { return 0 } return math.Sqrt(ft) } func (img *Image) ColorModel() color.Model { return color.RGBAModel } func (img *Image) Bounds() image.Rectangle { return image.Rect(0, 0, img.width, img.width) } func (img *Image) At(x, y int) color.Color { intShift := img.width / 2 radius := img.CalcHeartRadius(x, y, intShift) fmax := float64(intShift)*0.9 if radius > fmax { return color.RGBA{0, 0, 0, 0} } intRadius := uint8(radius) if fmax > 150 { intRadius = uint8(150 * float64(intRadius) / fmax) } return color.RGBA{255-intRadius, 0, 0, 255} } func main() { width := 240 m := Image{width} pic.ShowImage(&m) }
因为go image包中坐标轴方向, y轴方向向下, 即(0,0)点在正方形左上方, 因此要转变方程,替换y为-y, 另外心形中心变为(width/2, width/2), 因此平移方程,x=x-width/2, y = y-wdith/2
生成后,打开html, 查看图像,图片如下:
原文:https://www.cnblogs.com/gsjtu/p/12640175.html
内容总结
以上是互联网集市为您收集整理的go语言学习-笔记4全部内容,希望文章能够帮你解决go语言学习-笔记4所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。