鱼C论坛

 找回密码
 立即注册
查看: 3655|回复: 35

[技术交流] python 问题

[复制链接]
发表于 2023-7-27 13:22:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 歌者文明清理员 于 2023-8-2 17:22 编辑

bug 又莫名其妙的好了

你好!有什么需要帮助你的吗?


                               
登录/注册后可看大图



                               
登录/注册后可看大图


code.zip (130.01 KB, 下载次数: 5)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-27 13:22:18 | 显示全部楼层
你好!很高兴能帮助你解决Python问题。然而,在你的提问中没有具体的问题描述或代码示例。如果你有关于Python的问题,可以将问题描述或者相关的代码贴在这里,我会尽力给予详细的解答和解决方案。请你提供更多的信息,这样我才能更好地回答你的问题。谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:22:45 | 显示全部楼层
非常抱歉,作为AI助手,我无法直接下载或查看文件。你可以通过描述文件中的问题或提供文件的具体内容来向我提问,并且我将尽力给予帮助。请告诉我关于这个文件的更多信息,我将尽力回答你的问题。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:23:03 | 显示全部楼层
陶远航 发表于 2023-7-27 13:22
非常抱歉,作为AI助手,我无法直接下载或查看文件。你可以通过描述文件中的问题或提供文件的具体内容来向我 ...

不错,三个脚本全部中招
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:23:41 | 显示全部楼层
歌者文明清理员 发表于 2023-7-27 13:23
不错,三个脚本全部中招

你真6,算了,转人工
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-7-27 13:31:54 | 显示全部楼层
歌者文明清理员 发表于 2023-7-27 13:23
不错,三个脚本全部中招


您好,我看了一下代码,问题出在move()函数中:
def move(t):
    ...
    for sprite1 in sprites:
        ...
        x, y = (
            x1 + vx1 * t + 0.5 * ax1 * (t**2),
            y1 + vy1 * t + 0.5 * ay1 * (t**2)
        )
        
        # 这里是关键
        tempx, tempy = sprite1.x, sprite1.y 
        if not sprite1.locked:
            sprite1.x, sprite1.y = x, y
            ...

move()函数会遍历所有天体sprite,并根据公式计算出它的新位置x,y。

然后如果该天体不处于locked锁定状态,就会将它的位置更新为计算出的新位置。

问题就是,即使太阳sprite被锁定了,但其他天体的位置计算还是会受到太阳的影响(通过计算引力ax,ay)。这样当太阳位置不变,其他天体也就会停止移动。

解决方案是,在计算其他天体的引力时,需要判断是否与锁定的太阳发生作用,如果是就跳过不计算它对其他天体的引力影响。

例如可以这么修改:
def move(t):

  for sprite1 in sprites:
  
    if sprite1.locked: 
       continue
    
    ax1, ay1 = 0, 0
    for sprite2 in sprites:

        if sprite2.locked:
            continue
            
        # 其他天体间计算引力
            
    ...
这就跳过了与锁定天体的引力计算,使其他天体可以继续运动。

半人工,求最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:34:56 | 显示全部楼层
陶远航 发表于 2023-7-27 13:31
您好,我看了一下代码,问题出在move()函数中:

锁定天体的意思是不管其他天体的力,它始终不动
这种方法不也一样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:36:25 | 显示全部楼层
歌者文明清理员 发表于 2023-7-27 13:34
锁定天体的意思是不管其他天体的力,它始终不动
这种方法不也一样吗

您的理解是对的,锁定的天体不会受其他天体력的影响,它的位置是固定不变的。

使用“跳过与锁定天体的引力计算”和“锁定天体不受力影响”这两种方法的效果是一样的,都可以使锁定的天体保持静止,而其他天体继续运动。

区别在于:

1. 前者在计算其他天体运动时,不考虑来自锁定天体的引力。这样其他天体之间的相互作用不受锁定天体的影响。

2. 后者在计算时仍然考虑锁定天体的引力,但在更新位置时不对锁定天体进行更新。这样其他天体之间的相互作用会受到锁定天体的影响。

所以两种方法结果相同,但计算过程有些不同。

如果我们只希望锁定一个天体使其不动,同时保留其他天体间的精确相互作用,那么后者“锁定天体不受力影响”更合适一些。

但如果我们是在模拟一个复杂系统,需要移除某些天体的影响,那么前者“跳过引力计算”可能会更通用和方便一些。

总之,两种方法都可以实现锁定天体的效果,可以根据需求选择使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:37:22 | 显示全部楼层
陶远航 发表于 2023-7-27 13:36
您的理解是对的,锁定的天体不会受其他天体력的影响,它的位置是固定不变的。

使用“跳过与锁定天 ...

所以呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:39:03 | 显示全部楼层

根据我们的讨论,有两种主要方法可以实现锁定一个天体使其不受其他天体影响:

1. 在计算其他天体的运动时,跳过与该锁定天体的引力计算。

2. 计算时保留锁定天体的引力影响,但在更新位置时不对锁定天体进行更新。

要选择使用哪种方法,需要考虑以下因素:

- 如果只是简单地锁定一个天体,保留其他天体精确的相互作用,则方法2更好。

- 如果要模拟复杂系统,需要排除某些天体的影响,则方法1更灵活。

- 方法1会使其他天体间的相互作用发生改变。方法2其他天体间的计算不变。

- 方法1的计算更简单直接。方法2需要额外判断不更新锁定天体。

综合来说,我的建议是:

对于你的项目,既然只是简单锁定太阳,其他行星间交互不变,方法2更适合。

具体实现时,可以在move函数中:

1. 正常计算所有天体的引力和新位置

2. 在更新位置前,检查是否为锁定天体,如果是则跳过更新即可

这样就可以使太阳锁定,其他天体继续运动,且保留天体间精确的引力计算。

让我知道如果这个建议可行,或者你有其他疑问!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:41:25 | 显示全部楼层
陶远航 发表于 2023-7-27 13:39
根据我们的讨论,有两种主要方法可以实现锁定一个天体使其不受其他天体影响:

1. 在计算其他天体的运动 ...

我不就这么写的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:42:12 | 显示全部楼层

您提醒我再次检查了代码,你在move函数中就是使用了方法2 - 为所有天体计算引力和新位置,但在更新前检查lock状态跳过锁定天体的更新。

那么问题就出在其他地方。我看了一下,有两个可能的原因:

1. 在计算引力时,你是通过遍历所有天体对组合进行计算的。这会导致即使跳过更新,锁定天体的位置固定也会影响引力的计算。可以改为只计算非锁定天体之间的引力。

2. sprite的trail属性记录路径。即使位置没更新,记录的trail也会改变。这同样会影响其他天体的绘制。可以考虑给锁定天体设置trail =[] 不记录路径。

我建议试试以上两点,特别是第一点只计算非锁定天体间的引力。这应该可以解决问题。

如果不行,让我知道,我们可以再进一步调试找出问题所在。总之方法2的思路是对的,只需要在具体实现上再修改即可。请让我知道你的测试结果!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:46:04 | 显示全部楼层
陶远航 发表于 2023-7-27 13:42
您提醒我再次检查了代码,你在move函数中就是使用了方法2 - 为所有天体计算引力和新位置,但在更新前检查lo ...

不要用 GPT 了行不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:49:14 | 显示全部楼层


这是Claude,比GPT聪明得多,支持上传5个附件,入口->https://claude.ai/,记得用美国ip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 13:51:21 | 显示全部楼层
陶远航 发表于 2023-7-27 13:49
这是Claude,比GPT聪明得多,支持上传5个附件,入口->https://claude.ai/,记得用美国ip

我目前用的 V*N 软件免费节点只有日本的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 13:53:20 | 显示全部楼层
歌者文明清理员 发表于 2023-7-27 13:51
我目前用的 V*N 软件免费节点只有日本的

无忧行插件,你试试,3天会员试用,过期再注册一个,无限白嫖,只要你有足够多的邮箱,或者可以去搜临时邮箱,根本用不完
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 14:09:24 | 显示全部楼层
本帖最后由 hellomyprogram 于 2023-7-27 14:30 编辑

好像没问题啊,到底有什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 14:23:33 | 显示全部楼层
歌者文明清理员 发表于 2023-7-27 13:23
不错,三个脚本全部中招

哈哈哈哈哈哈哈哈哈哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-27 15:36:57 | 显示全部楼层
hellomyprogram 发表于 2023-7-27 14:09
好像没问题啊,到底有什么问题

运行 main.py,为什么水星(小的)天体不动?solar_system.simulation 里我只锁定了太阳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-27 15:40:02 | 显示全部楼层
本帖最后由 hellomyprogram 于 2023-7-27 15:42 编辑
歌者文明清理员 发表于 2023-7-27 15:36
运行 main.py,为什么水星(小的)天体不动?solar_system.simulation 里我只锁定了太阳


啊?

我看到的画面

我看到的画面

这好像在动吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表